본문 바로가기

Programming/Design pattern

(5)
[Design pattern] Factory method pattern Factory Method Pattern 팩토리 메소드 패턴을 사용하는 이유는 클래스간의 결합도를 낮추기 위한것이다. 결합도라는 것은 간단히 말해 클래스의 변경점이 생겼을 때 얼마나 다른 클래스에도 영향을 주는가이다. 팩토리 메소드 패턴을 사용하는 경우 직접 객체를 생성해 사용하는 것을 방지하고 서브 클래스(팩토리 메소드 클래스)에 위임함으로써 보다 효율적인 코드 제어를 할 수 있고 의존성을 제거한다. 결과적으로 결합도를 낮춰 유지보수가 용이해진다. EX. AAC ViewModel 을 생성할 때 정의하는 ViewModelProvider.Factory 참고 : 팩토리 메소드 패턴(Factory Method Pattern), [Design_Pattern] 팩토리 메서드 패턴(Factory Method Pat..
[Design pattern] Adapter pattern Adapter Pattern 어댑터 패턴은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. (출처:위키백과) 아래 사진으로 보면 클래스의 인터페이스 - Client, 다른 인터페이스 - Adaptee 로 보면 된다. 어댑터 패턴은 이미 구축되어있는 것을 새로운 어떤 것이 사용할 때 양쪽 간의 호환성을 유지해주기 위해 사용한다. 기존의 로직을 그대로 이용할 수 있도록 중간에 변환기를 만든다는 느낌으로 이해하면 된다. 어댑터 패턴을 구현하는 방식은 아래와 같이 두가지가 있다. 클래스 방식 : 어댑터 클래스에서 기존 클래스를 extends 하고, 인터페이스를 implements 하는 방식이다...
[Design pattern] Singleton pattern Singleton Pattern Singleton Pattern 단 하나의 인스턴스만 생성해 사용하는 디자인 패턴. 같은 인스턴스가 필요할 때 기존에 생성된 인스턴스를 사용하도록 함. 이렇게 인스턴스를 유일하게 사용해야하는 경우가 언제인지는 직접 파악해야한다. 싱글톤 패턴을 쓰는 이유 단 한번의 new로 생성하여 고정된 메모리 영역을 얻기 때문에, 메모리 낭비를 방지할 수 있다. 싱글톤으로 만들어진 인스턴스는 전역 인스턴스이기 때문에 다른 클래스와 데이터를 공유하기가 쉽다. 하지만 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 결합도가 높아져 개방-폐쇄 원칙을 위배하게 된다(객체 지향 설계 원칙에 어긋남). 자바에서는 생성자를 private으로 선언하여 new 를 사용한 객체 생성이 불가..
[Design pattern] Builder pattern Builder Pattern Builder Pattern 빌더 패턴은 추상 팩토리 패턴이나 팩토리 메소드 패턴처럼 새로운 객체를 만들어서 반환하는 패턴이긴 하지만 실제 동작 방식은 조금 다르다. 빌더 패턴은 생성자에 들어갈 매개 변수가 많든 적든 차례차례 매개 변수를 받아들이고, 모든 매개 변수를 받은 뒤에 이 변수들을 통합해서 한번에 사용한다. Builder pattern으로 해결할 수 있는 것 불필요한 생성자를 만들지 않고 객체를 만든다. 데이터의 순서에 상관 없이 객체를 만들어 낸다. 사용자가 봤을때 명시적이고 이해할 수 있어야 한다. builder pattern의 예시 Retrofit Observable Glide, Picasso … 참고 : 빌더 패턴(Builder Pattern), [patte..
[Design pattern] Observer pattern Observer Pattern Observer Pattern 상태를 가지고 있는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수가 있다. 서로의 정보를 넘기고 받는 과정에서 정보의 단위가 클 수록, 객체들의 규모다 클 수록, 각 객체들의 관계가 복잡할 수록 점점 구현하기 어려워지고 복잡성이 매우 증가할 것이다. 이러한 기능을 할 수 있도록 가이드라인을 제시해 주는 것이 바로 옵저버 패턴이다. 옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 정보가 갱신되는 1:N 의 관계를 정의한다. 연결은 인터페이스를 이용하여 느슨한 결합성을 유지한다. 주체, 옵저버 인터페이스..