Java 디자인 패턴: 15개의 글
구조패턴 목록 어댑터 패턴 (Adapter Pattern) 브릿지 패턴 (Bridge Pattern) 컴포짓 패턴 (Composite Pattern) 데코레이터 패턴 (Decorator Pattern) 퍼사드 패턴 (Facade Pattern) 플라이웨이트 패턴 (Flyweight Pattern) 프록시 패턴 (Proxy Pattern) 이미지 변환이나 디코딩과 같이 비용이 높은 경우에 가상프록시 패턴이 유용할 것 같고, 엑세스 관련 기능은 자주 사용되는 부분이기 때문에 보호프록시 패턴은 항상 필요로 할 것 같다. 장점 1) 가상 프록시 : 시간이 오래 걸리는 프로세스가 있다면 생성시 동작하도록 하던 로직을 함수를 호출하여 실행할 때 동작하도록 미뤄둘 수 있습니다. 따라서 프로그램이 시작되는 경우에는 오..
구조패턴 목록 어댑터 패턴 (Adapter Pattern) 브릿지 패턴 (Bridge Pattern) 컴포짓 패턴 (Composite Pattern) 데코레이터 패턴 (Decorator Pattern) 퍼사드 패턴 (Facade Pattern) 플라이웨이트 패턴 (Flyweight Pattern) 프록시 패턴 (Proxy Pattern) 게임이나 지도처럼 동일한 객체를 특정 속성만 바꿔서 재사용이 가능한 경우에 적용하면 큰 효과를 기대할 수 있는 패턴인 것 같다. 장점 - 객체의 수를 줄입니다. - 객체가 지속되는 경우에 필요한 메모리 및 저장장치의 양을 줄입니다. 사용시기 - 응용프로그램이 많은 수의 객체를 사용하는 경우 - 물체의 수량으로 인해 저장비용이 높은 경우 - 응용프로그램이 객체 ID에 의존..
구조패턴 목록 어댑터 패턴 (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) 객체와 객체 사이의 연관관계가 계층으로 표현해야 하고, 같은 계층에서 다른 역할을 구현할 필요가 있다면 이 패턴이 필요할 것 같다. 장점 - 기본적이고 복잡한 객체를 포함하는 클래스 계층을 정의합니다. - 새로운 종류의 구성 요소를 쉽게 추가할 수 있습니다. - 관리 가능한 클래스 또는 인터페이스로 구조의 유연성을 제공합니다. 사용법 - 객체의 전체 또는 부분 계층을 나..
구조패턴 목록 어댑터 패턴 (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) 각 클래스의 메소드의 로직에 차이가 없고, 생성 시에 개체의 속성에만 차이가 있을 때 사용하는 것이 좋을 것 같다. 장점 - 서브 클래싱의 필요성을 줄입니다. - 객체 생성의 복잡성을 숨깁니다. - 클라이언트는 어떤 유형의 객체인지 모른 채 새로운 객체를 얻을 수 있습니다. - 런타임에 객체를 추가하거나 제거할 수 있습니다. 사용시기 - 클래스가 런타임에 인스턴스화..