디자인패턴

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 언제 전략 패턴을 사용하는가? 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이기 때문..
시작하기 전 ... 프록시 패턴은 목적에 따라 여러가지 패턴의 양상을 띈다. 이번 포스팅에서는 보호 프록시에 대해 알아보도록 하고, 전반적인 프록시 패턴의 개념은 아래 포스팅을 참고하면 된다. 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..
Goal 디자인 패턴이란 무엇인지 알아보고 이해한다 디자인 패턴에 필요한 도구들과 그 종류들을 알아본다 디자인 패턴 프로그램을 작성하다 보면 비슷 비슷한 상황이 직면하게 되는 경우가 많은데, 그러한 상황에서 개발자들이 고민을 정제한 사실 상의 표준 설계패턴이다. 디자인 패턴은 객체 지향의 특성 중 상속(extends), 인터페이스(interface/implements), 합성(객체를 속성으로 사용)을 이용한다. 왜 디자인 패턴을 사용해야 할까? 개발자 사이에서 서로 이해할 수 있는 용어를 제공하고, 빠르고 정확한 파악이 가능하여 의사소통이 쉽다 객체 수준에서의 생각이 아닌 패턴 수준에서 생각할 수 있기에 아키텍쳐를 생각하는 수준이 올라간다 디자인 도구상자 안에 들어가야 할 도구들 1. 객체지향의 기초 캡..
Goal Singleton이 무엇인지 이해한다 Singleton을 생성하는 방법에 대해 알아보고 이해한다 Singleton Pattern 싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 프로그램 시작부터 종료 시까지 어떤 클래스의 인스턴스가 메모리 상에 단 하나만 존재할 수 있게 하고 이 인스턴스에 대해 어디에서나 접근할 수 있도록 하는 패턴이다. 왜 싱글턴 패턴을 사용할까? 예로, 로깅을 찍는 객체, 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 인스턴스를 여러개 만들게 되면 불필요한 자원을 사용하게 되며 또 프로그램이 예상치 못한 결과를 낳을 수 있다. 결과에 일관성이 없어질 가능성이 있다 한정된 리소스에서 메모리를 사용할 때 사용한다 => 메모리를 많이 사용하면 안될 때 ..
dev_rosieposie
'디자인패턴' 태그의 글 목록