Development
-
[Java 언어로 배우는 디자인 패턴 입문]Ch17. ObserverDevelopment/[디자인패턴] 2019. 7. 8. 13:29
Observer 상태의 변화를 알려주기 android에서는 observer 패턴은 알게 모르게 많이 사용하고 있습니다. broadcast receiver 나 흔히 말하는 listener 등이 이 observer 패턴을 사용하고 있습니다. 책에도 나오고 있지만, observer (능동적으로 관찰하는 것이)라기 보단 Publish-Subscribe 패턴이 더 적당할 수도 있습니다. (출처 - http://blog.naver.com/janghun741/10187843030) interface 인 Observer를 상속받아 구현합니다. 그리고 addObserver를 통해 notification을 받을 클래스들을 등록합니다. 그렇다면 실제 observer들에게는 어떻게 data를 전달해 줄까요? public ab..
-
[Java 언어로 배우는 디자인 패턴 입문]Ch07. BuilderDevelopment/[디자인패턴] 2019. 6. 26. 18:27
Builder 복잡한 인스턴스 조립하기 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공할 수 있도록 합니다. 빌더 패턴은 객체 생성과 객체를 표현하는 방법을 분리하는 패턴입니다. 책의 예제보다 아래 예제가 더 이해하기 좋아서, 아래 것으로 대체합니다. (출처 :https://jdm.kr/blog/217) /** * 제약사항 : 이 객체는 한번 생성되면 읽기(Read)만 가능해야 합니다. */ public class PersonInfo { private String name; private Integer age; private String favoriteColor; private String favoriteAn..
-
[Java 언어로 배우는 디자인 패턴 입문]Ch15. FacadeDevelopment/[디자인패턴] 2019. 6. 21. 18:41
Facade 단순한 창구 한 서브 시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공하는 패턴입니다. 시스템 내부에 있는 각 클래스의 역할이나 의존관계를 생각해서 정확한 순서로 클래스를 이용하도록 해줍니다. 서브 시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 정의합니다. 위의 다이어그램에서 Facade의 역할은 하위 클래스들의 많은 역할에 대한 단순한 창구입니다. Facade는 복잡한 것을 단순하게 보여줍니다. 여기에서 '복잡한 것'이란 내부의 클래스의 관계 나 사용법이 복잡한 것을 의미합니다. 호출하는 순서나 혹은 접근 제어자 등을 Facade에서 정리해서 외부에 노출시켜 줄 수 있습니다.
-
[Java 언어로 배우는 디자인 패턴 입문]Ch4. Factory MethodDevelopment/[디자인패턴] 2019. 6. 18. 16:59
Factory Method 하위 클래스에서 인스턴스 작성하기 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 합니다. 실제 예제의 다이어그램을 보겠습니다. framework package에 있는 Factory class와 Product class는 모두 추상 클래스입니다. 그리고 idcard package에 있는 IDCardFactory와 IDCard가 각각 상속해서 실제 구현을 했습니다. Factory class의 구현은 아래와 같습니다. public abstract class Factory { public final Product create(String owner) { Product p = createProduct(owneer); ..
-
Chapter 5. 필요 이상으로 노출하지 마라Development/[자바API디자인] 2019. 6. 12. 20:10
메서드가 필드보다 낫다 생성자보다 팩토리가 낫다 모든 것을 final로 만들어라 어울리지 않는 곳에 설정자 메서드를 넣지 마라 프렌드 코드에서만 접근하는 것을 허용하라 객체를 만든 이에게 더 많은 권한을 부여하라 (TBD) 깊은 계층구조를 노출하지 마라 (TBD) 좋은 API 설계에는 다양한 특징이 있다. 그중 하나가 '더 적게 노출할수록 좋다'이다. 어떤 메서드나 클래스를 package private으로 만들면, 나중에 API 사용자가 해당 요소에 접근해 달라고 하면 가시적으로 만들어 주기만 하면 된다. 너무 일찍 그럴 필요는 없다. 메서드가 필드보다 낫다 API를 감추기 위해 살펴볼 첫번째 기법은 필드를 감추는 것이다. 필드를 직접 노출하기보다는 필드에 접근하는 메서드(getter, setter)를 ..