JAVA/디자인 패턴

Goal 추상 팩토리에 대해 알아본다 객체 의존성에 대해 고찰 해보기 샘플 코드를 통한 추상 팩토리를 이해한다 추상 팩토리 패턴(Abstact Factory Pattern) 추상 팩토리 패턴은 상세화된 서브 클래스를 정의하지 않고도(= 구상 클래스에 의존하지 않고도) 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 이 인터페이스를 사용하면 코드와 제품을 생산하는 팩토리를 분리할 수 있다. 추상 팩토리 패턴은 팩토리 메서드 패턴을 좀 더 캡슐화한 방식이라고 볼 수가 있다. 왜 or 언제 추상 팩토리 패턴을 사용하는가? 객체가 생성되거나 구성, 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한 번 구성..
Goal 팩토리 패턴에 대해 알아본다 팩토리 메소드에 대해 알아본다 샘플 코드를 통한 팩토리 메소드를 이해한다 팩토리 패턴(Factory Pattern) 객체 지향 디자인 패턴의 기본 원칙은 확장에 있어서는 열려 있어야 하며, 수정에 있어서는 닫혀 있어야 한다는 것이다. (OCP -개방폐쇄) 객체의 생성을 담당하는 클래스를 한 곳에서 관리하여 결합도를 줄이기 위하여 팩토리 패턴이 출현했다. 팩토리 메소드 패턴(Factory Method Pattern) 팩토리 메소드 패턴에서는 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정함으로써 객체 생성을 캡슐화하는 패턴이다. 즉, 어떤 클래스의 인스턴스를 만들지를 결정해서가 아니라, 생산자 클래스가 실제 생산될 제..
Goal 간단한 팩토리에 대해 알아본다 샘플 코드를 통한 객체의 캡슐화를 간단한 팩토리로 변경해본다 다양한 팩토리 만들어보기 new 연산자에 대한 고찰 간단한 팩토리 (Simple Factory) 디자인 패턴이라기 보다는 프로그래밍에서 자주쓰이는 관용구에 가깝다. 왜 or 언제 간단한 팩토리 사용하는가? 객체 생성을 처리하는 부분을 Factory라고 부르며, 해당 부분을 캡슐화하여 분리할 수 있기 때문에 코드 가독성이나 관리 측면에서 용이하다 다이어그램 최첨단 피자 코드 만들기 as - is 피자 주문 코드 public Pizza orderPizza(String type) { Pizza pizza = new Pizza(); // 바뀌는 코드 if(type.equals("cheese")){ pizza = ..
Goal 전략 패턴에 대해 알아보고 이해한다 전략 패턴이 필요한 경우의 예시를 알아본다 문제를 파악하고, 디자인 원칙에 대해 알아본다 디자인 원칙에 입각한 전략패턴 이해하기 캡슐화된 행동 살펴보고 이해하기 클래스를 합치는 방법은 무엇인가? 전략 패턴 (Strategy Parttern) 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 이다. 여기서 '전략'이란 일종의 알고리즘이 될 수 도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다. 왜 or 언제 전략 패턴을 사용하는가? 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이기 때문..
Goal 데로레이터 패턴에 대해 알아보고 이해한다 샘플코드를 통한 데코레이터 패턴을 이해한다 데코레이터 패턴 (Decorator Parttern) 객체에 추가 요소를 동적으로 더할 수 있는 패턴. 다이어그램 데코레이터 패턴을 사용하는 이유 상속을 사용할 경우 클래스가 많아지거나 일부 서브클래스에는 적합한 기능을 추가해야하는 문제가 있지만, 데코레이터 패턴을 사용하면 보다 훨씬 유연하게 기능을 확장할 수 있기 때문이다. 주문 시스템에서 생각해보기 상황 : 상속을 써서 음료 가격과 첨과물(샷, 시럽, 우유, 휘핑크림 등) 가격을 합해서 총 가격을 산출하는 방법은 좋은 방법이 아님 요구 사항 : 다크로스트에 모카, 휘핑크림을 추가한 음료 해결 방안 : 데코레이터 패턴을 사용해서 가격을 계산해보자 1. Dark..
시작하기 전 ... 프록시 패턴은 목적에 따라 여러가지 패턴의 양상을 띈다. 이번 포스팅에서는 보호 프록시에 대해 알아보도록 하고, 전반적인 프록시 패턴의 개념은 아래 포스팅을 참고하면 된다. https://dev-rosiepoise.tistory.com/80 [Proxy Pattern] 프록시 패턴이란? Goal 프록시 패턴이란 무엇인지 알아보고 이해한다 프록시 패턴의 다이어그램 프록시 패턴 (Proxy Pattern) 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)를 제공한다. 실제 객 dev-rosiepoise.tistory.com Goal 보호 프록시에 대해 알아보고 이해한다 보호 프록시 샘플 코드를 통해 보호 프록시를 이해한다 프록시 패턴 (Proxy Pattern) 특정 객체..
시작하기 전 ... 프록시 패턴은 목적에 따라 여러가지 패턴의 양상을 띈다. 이번 포스팅에서는 가상 프록시에 대해 알아보도록 하고, 전반적인 프록시 패턴의 개념은 아래 포스팅을 참고하면 된다. https://dev-rosiepoise.tistory.com/80 [Proxy Pattern] 프록시 패턴이란? Goal 프록시 패턴이란 무엇인지 알아보고 이해한다 프록시 패턴의 다이어그램 프록시 패턴 (Proxy Pattern) 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)를 제공한다. 실제 객 dev-rosiepoise.tistory.com Goal 가상 프록시에 대해 알아보고 이해한다 가상 프록시 샘플 코드를 통해 가상 프록시를 이해한다 프록시 패턴 (Proxy Pattern) 특정 객체..
시작하기 전 ... 프록시 패턴은 목적에 따라 여러가지 패턴의 양상을 띈다. 이번 포스팅에서는 원격 프록시에 대해 알아보도록 하고, 전반적인 프록시 패턴의 개념은 아래 포스팅을 참고하면 된다. https://dev-rosiepoise.tistory.com/80 [Proxy Pattern] 프록시 패턴이란? Goal 프록시 패턴이란 무엇인지 알아보고 이해한다 프록시 패턴의 다이어그램 프록시 패턴 (Proxy Pattern) 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)를 제공한다. 실제 객 dev-rosiepoise.tistory.com Goal 원격 프록시에 대해 알아보고 이해한다 RMI에 대해 알아본다 원격 프록시 샘플 코드를 통해 원격 프록시를 이해한다 프록시 패턴 (Proxy P..
Goa 프록시 패턴이란 무엇인지 알아보고 이해한다 프록시 패턴의 다이어그램 프록시 패턴 (Proxy Pattern) 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)를 제공한다. 실제 객체의 메서드를 호출하면 그 호출을 중간에 가로채느 패턴이다. 프록시 패턴에는 수많은 변종이 있고, 그리고 그러한 변종들은 대게 접근을 제어하는 방법을 다르게 제어한다. 왜 프록시 패턴을 사용하는가? 1. 원격 객체, 2. 생성하기 힘든 객체, 3.보안이 중요한 객체와 같은 다른 객체로의 접근을 제어하는 대리인 객체를 만들 수 있기 때문 프록시 패턴 사용 시 장점 객체에 대한 보안을 제공한다. 일반적으로 클라이언트는 객체에 직접 접근할 수 없다. 이는 객체가 악의적인 활동에 의해 변형될 수 있기 때문이다. ..
Goal 어댑터 패턴이란 무엇인지 알아보고 이해한다 어댑터 패턴을 사용한 코드를 이해한다 객체 어댑터와 클래스 어댑터를 이해한다 어댑터 패턴 (Adapter Pattern) 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있다. => 어댑터는 한 객체의 인터페이스를 구현하고 다른 객체를 매핑한다. 언제 어댑터 패턴을 사용해야 할까? 새로운 클래스의 인터페이스가 기존 코드를 만들 때 사용했던 인터페이스와 다를 때 사용한다. 적용 예시 기존의 코드 Duck 인터페이스와 그를 확장한 MaralldDuck가 있다고 하자 public interface Duck { public void quack(); public voi..
dev_rosieposie
'JAVA/디자인 패턴' 카테고리의 글 목록