Skip to content

배토의 개발일지

나를위한 단편적 기억들의 기록

Menu
  • 안드로이드
  • 코틀린
  • Godot
  • 블렌더
  • git
  • 게임제작일지
  • 기타
Menu

[태그:] design pattern

Multithread Singleton 구현에서의 Double-checked locking pattern

Posted on 2021년 7월 16일 by batmask

안드로이드 Room에서 Database 클래스의 Singleton 구현에 조금 의아해 보이는 코드가 있었다. Database class 코드를 다시보면 아래와 같은데, singleton 구현부분에서 getInstance() 함수만 떼어서 보자. 코드를 보면, instance의 null 여부를 두 번 체크하고 있다. 생각없이 보면 이상할 수 있는데, 멀티 쓰레드 동기화시 꼭 필요한 부분이며 Double-checked locking 이라고 부르는 디자인 패턴이다. 링크의 위키페이지를 따라가면 관련 설명이 있다….

Design Pattern: Command Pattern

Posted on 2020년 5월 28일2020년 5월 28일 by batmask

객체에서 다른 객체로 request를 보낼 때, request 내용이 복잡해 지거나 확장이 필요하면, 프로토콜을 따로 설계하게된다. 그렇게 해야 보다 유연해지기 때문이다. request에 대한 프로토콜을 별도의 Command 오브젝트로 구현하는 방법이 바로 Command Pattern이다. request를 보내는 Invoker 객체는 이를 받는 Reciever 객체에 대한 정보가 없어도 되기 때문에(Command 객체가 갖고있다), 두 객체간 coupling을 제거할 수 있다. Command Pattern의 실제…

Design Pattern: Observer

Posted on 2020년 5월 3일2020년 5월 16일 by batmask

블로그나 유튜브를 보면, 구독을 해놓고 새글이나 영상이 올라올 때 알람을 받는다. 이런 상호작용을 게시-구독(Publish-Subscribe)관계라고 한다. Observer pattern은 이처럼 observer를 등록해놓고 대상의 변화에 대한 알람을 받는 경우에 적용되는 design pattern이다. Observer pattern은 callback의 형태로 이미 많은 곳에서 사용하고 있고 경험해봤을 것이다. 안드로이드에서 BroadcastReceiver를 등록해 사용하는 것도 이런 형태의 하나라고 볼 수 있다. 하나의 데이터를 두고 여러방식의…

Design Pattern: Decorator

Posted on 2020년 4월 23일2020년 4월 23일 by batmask

Decorator pattern은 객체의 기능을 동적으로 확장하고자 할 때, 또는 상속받을 클래스가 상속이 불가능할 때 사용되는 디자인 패턴이다. 게임의 예를 들면 맵을 돌아다니다가 일시적으로 공격력이 강화되거나, 속도가 빨라지거나, 방어력이 강화되는 아이템을 먹는 경우를 생각해 볼 수 있다.이런 효과들은 중첩되어 적용도 가능하다. 또 익숙한 예로는 text editor를 생각해볼 수 있다. 볼드, 이탤릭, 칼라변경등 기본 텍스트를 꾸며주는 기능들이…

Design Pattern: Factory method

Posted on 2020년 4월 19일2021년 7월 16일 by batmask

Factory Method Pattern 객체 생성을 동적으로 해야해서 어떤 객체를 생성할지 알 수 없을 때, 객체 생성방법을 알고 있는 factory method를 따로 만들고 생성을 이 메소드에 위임해서 동적으로 생성해 사용하는 방법이다. 예를 들면, 여러 포맷을 지원하는 문서 편집기에서 새로운 문서를 생성할 때 문서 생성을 담당하는게 factory method가 된다. 그림판에서 삼각형, 사각형, 동그라미등의 도형을 생성하는 경우, 역시…

글 페이지 매김

  • 1
  • 2
  • Next

최신 글

  • Blender : snap을 써서 다른 vertex에 정렬하기
  • KTor Client 기본 사용 정리
  • 게임 만들거다.
  • Using Koin with Android Compose

보관함

2025 5월
일 월 화 수 목 금 토
 123
45678910
11121314151617
18192021222324
25262728293031
« 4월    

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org
©2025 배토의 개발일지 | Built using WordPress and Responsive Blogily theme by Superb