JAVA/Design Patterns: 52개의 글
구조패턴 목록 어댑터 패턴 (Adapter Pattern) 브릿지 패턴 (Bridge Pattern) 컴포짓 패턴 (Composite Pattern) 데코레이터 패턴 (Decorator Pattern) 퍼사드 패턴 (Facade Pattern) 플라이웨이트 패턴 (Flyweight Pattern) 프록시 패턴 (Proxy Pattern) 객체와 객체 사이의 연관관계가 계층으로 표현해야 하고, 같은 계층에서 다른 역할을 구현할 필요가 있다면 이 패턴이 필요할 것 같다. 장점 - 기본적이고 복잡한 객체를 포함하는 클래스 계층을 정의합니다. - 새로운 종류의 구성 요소를 쉽게 추가할 수 있습니다. - 관리 가능한 클래스 또는 인터페이스로 구조의 유연성을 제공합니다. 사용법 - 객체의 전체 또는 부분 계층을 나..
구조패턴 목록 어댑터 패턴 (Adapter Pattern) 브릿지 패턴 (Bridge Pattern) 컴포짓 패턴 (Composite Pattern) 데코레이터 패턴 (Decorator Pattern) 퍼사드 패턴 (Facade Pattern) 플라이웨이트 패턴 (Flyweight Pattern) 프록시 패턴 (Proxy Pattern) 인터페이스 구현 시 로직이 많이 변경되어도 사용방법에 있어서 차이가 없도록 코드를 작성해야할 것 같다. 원하는 기능이 있다면 어떻게 원래의 함수에 잘 스며들 수 있을지 고민이 필요할 듯 하다. 장점 - 인터페이스와 구현을 분리할 수 있습니다. - 확장성을 향상시킵니다. - 클라이언트로부터 구현 정보를 숨길 수 있습니다. 사용시기 - 기능적 추상화와 구현 사이에 영구적인 ..
구조패턴 목록 어댑터 패턴 (Adapter Pattern) 브릿지 패턴 (Bridge Pattern) 컴포짓 패턴 (Composite Pattern) 데코레이터 패턴 (Decorator Pattern) 퍼사드 패턴 (Facade Pattern) 플라이웨이트 패턴 (Flyweight Pattern) 프록시 패턴 (Proxy Pattern) 기존에 있는 클래스의 많은 부분을 재사용하는 경우에만 사용하고, 적은 부분만 가져다가 쓰는 경우에는 새로운 코드를 작성하는 편이 더 좋을 것 같다. 장점 - 이전에는 호환되지 않았던 둘 이상의 객체가 상호작용을 할 수 있습니다. - 기존 기능을 재사용 할 수 있습니다. 사용시기 - 객체가 호환되지 않는 인터페이스로 기존 클래스를 사용해야하는 경우 - 호환되는 인터페이스가..
생성패턴 목록 팩토리 메소드 패턴 (Factory Method Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 싱글톤 패턴 (Singleton Pattern) 프로토타입 패턴 (Prototype Pattern) 빌더 패턴 (Builder Pattern) 오브젝트 풀 패턴 (Object Pool Pattern) 스레드 풀과 같이 한정된 리소스에서 자원을 재사용하는 방식을 적용하기를 원할 때 사용하면 성능개선에 좋을 것 같다. 장점 - 응용프로그램의 성능을 크게 향상시킵니다. - 클래스 인스턴스 초기화 속도가 높은 상황에서 가장 효과적입니다. - 커넥션을 관리하고 이를 재사용하고 공유할 수 있는 방법을 제공합니다. - 만들 수 있는 최대 객체 수에 대한 제한을 제공할 수 있..
생성패턴 목록 팩토리 메소드 패턴 (Factory Method Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 싱글톤 패턴 (Singleton Pattern) 프로토타입 패턴 (Prototype Pattern) 빌더 패턴 (Builder Pattern) 오브젝트 풀 패턴 (Object Pool Pattern) 객체의 구성과 표현을 명확히 해야하는 경우에 필요한 것 같다. 하지만 추상적으로 정의되어있는 상태에서는 함부로 적용할 수 있는 패턴이 아닌 것 같다. 장점 - 객체의 구성과 표현을 명확하게 구분합니다. - 프로세스를 보다 잘 제어할 수 있습니다. - 객체의 내부 표현 변경을 지원합니다. 사용시기 - 단일 단계에서 개체를 만들 수 없을 때 UML Interface C..
생성패턴 목록 팩토리 메소드 패턴 (Factory Method Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 싱글톤 패턴 (Singleton Pattern) 프로토타입 패턴 (Prototype Pattern) 빌더 패턴 (Builder Pattern) 오브젝트 풀 패턴 (Object Pool Pattern) 각 클래스의 메소드의 로직에 차이가 없고, 생성 시에 개체의 속성에만 차이가 있을 때 사용하는 것이 좋을 것 같다. 장점 - 서브 클래싱의 필요성을 줄입니다. - 객체 생성의 복잡성을 숨깁니다. - 클라이언트는 어떤 유형의 객체인지 모른 채 새로운 객체를 얻을 수 있습니다. - 런타임에 객체를 추가하거나 제거할 수 있습니다. 사용시기 - 클래스가 런타임에 인스턴스화..
생성패턴 목록 팩토리 메소드 패턴 (Factory Method Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 싱글톤 패턴 (Singleton Pattern) 프로토타입 패턴 (Prototype Pattern) 빌더 패턴 (Builder Pattern) 오브젝트 풀 패턴 (Object Pool Pattern) 싱글톤 패턴은 Enum Class 로 작성하는 것이 가장 효율적이라고 한다 장점 - 각 요청에서 객체가 생성되지 않으므로 메모리를 절약합니다. - 하나의 인스턴스만 반복해서 재사용할 수 있습니다. 사용시기 - 멀티스레드 및 데이터베이스 응용 프로그램에서 사용합니다. - 로깅, 캐싱, 스레드 풀, 구성설정 등 UML Singleton Class : JDBCSingle..
생성패턴 목록 팩토리 메소드 패턴 (Factory Method Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 싱글톤 패턴 (Singleton Pattern) 프로토타입 패턴 (Prototype Pattern) 빌더 패턴 (Builder Pattern) 오브젝트 풀 패턴 (Object Pool Pattern) 앞에서 배운 팩토리 메소드 패턴을 여러개를 동시에 사용해야 하는 경우에는 추상 팩토리 패턴을 사용하면 새로운 팩토리(추가기능)가 생기더라도 기존에 구현해 놓은 코드에 영향을 주지 않을 수 있고, 새로운 팩토리를 사용하는 클래스에서도 기존 방식과 동일하게 팩토리를 생성하여 사용할 수 있다. 장점 - 클라이언트 코드를 구현클래스에서 분리합니다. - 객체 패밀리의 교환을..
생성패턴 목록 팩토리 메소드 패턴 (Factory Method Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 싱글톤 패턴 (Singleton Pattern) 프로토타입 패턴 (Prototype Pattern) 빌더 패턴 (Builder Pattern) 오브젝트 풀 패턴 (Object Pool Pattern) 시스템을 설계할 때에는 먼저 추상적으로 설계를 하게 될 수 밖에 없다. 때문에 추상적인 개념을 추상클래스로 만들어 두고 팩토리 메소드 패턴을 적용하면 기초 설계에 있어서 유용할 것 같다고 생각한다. 장점 - 서브클래스가 객체타입을 선택해서 생성할 수 있습니다. - 특정 클래스를 코드에 바인딩 할 필요가 없어서 느슨한 결합을 촉진합니다. - 코드는 인터페이스와 추상클..
행동패턴 목록 책임연쇄 패턴 (Chan of Responsibility Pattern) 커맨드 패턴 (Command Pattern) 해석자 패턴 (Interpreter Pattern) 반복자 패턴 (Iterator Pattern) 중재자 패턴 (Mediator Pattern) 메멘토 패턴 (Memento Pattern) 관찰자 패턴 (Observer Pattern) 상태 패턴 (State Pattern) 전략 패턴 (Strategy Pattern) 템플릿 패턴 (Template Pattern) 여기서 초점을 둘 부분은 final 로 만들어둔 변경 불가능한 프로세스 함수인 play() 이다. 고정되어있는 순서로 프로세스를 적용하려면 아래와 같이 final로 지정해 두는 것이 훨씬 효과적일 것 같다. 또한 ..