Browse Tag: 디자인패턴

[디자인패턴]Factory 패턴

팩토리라는 단어처럼 인스턴스를 생성해주는 팩토리(sub class)가 존재하고 새로운 객체를 원할 경우 팩토리를 통해 생성하는 패턴.

Spring 프레임워크에서 자주 사용되는 패턴으로 캡슐화 , 유연성 , 느슨한 관계의 장점을 가질 수 있다.

팩토리 패턴의 경우 팩토리 라는 단어를 통해 직관적으로 이해하기 쉬우며 실제로 코드를 보면 쉽게 이해할 수 있는 패턴이다.

참고 : https://blog.seotory.com/post/2016/08/java-factory-pattern

[디자인패턴]visitor 패턴

조금 이해하는게 쉽지는 않다.(재귀 관계적 사고가 필요함)

천천히 봐보자.

먼저 위키피디아에 따르면 visitor 패턴(방문자 패턴)은 알고리즘(동작)을 객체 구조에서 분리시키기 위한 패턴이다. 이렇게 분리 하면 구조의 변화 없이 새로운 동작을 추가시킬 수 있다는 장점을 가지게 된다.(…… 이걸보고 이해가 안되는건 나만인가)

visitor 패턴은 컴포지트 패턴과 관련이 있다.(위키피디아에서는 같이 보기로 컴포지트 패턴 링크 제공)

가령, Car 라는 객체가 있다면 visitor 패턴에서는 Car는 Wheel 과 Handle을 가진 구조체(객체구조)가 된다. 이때 Visitor는 car객체내의 Wheel과 Handle 의 가격을 확인하는 알고리즘(동작)을 가지게 되는데(해당 알고리즘은 visit 메소드로 구현) 후에 Wheel의 마모 정도를 확인하는 알고리즘을 추가하고 싶다면 visitor를 추가하는 식으로 알고리즘을 추가할 수 있다.

이렇게 작동하는 것이 visitor패턴의 알고리즘과 객체구조 분리라고 이해.

[디자인패턴]prototype pattern

프로토타입 패턴은 프로토타입(원형)을 만들어 놓고 그것을 clone 하여 사용 하는 방법이다.

new 를 사용하여 객체를 생성 하는것이 비용이 크거나 , 기존의 객체와 비슷하지만 일부만 변경된 객체를 사용하는 경우 사용할 수 있다.

가령, 그랜져와 K7 라는 객체가 필요한데 사실 둘은 공통의 플랫폼을 사용하기 때문에 car라는 프로토타입(원형)을 만들어 놓고 그랜져와 k7이라는 객체가 필요할 때마다 프로토타입을 clone 하여 사용하면 car라는 객체를 초기화 할때 필요한 비용(필드 값을 설정하는등)을 줄 일 수 있다.

이때 원형을 구현하고 복제된 객체를 던져주는 부분은 팩토리 패턴과 함께 사용 될 수 있으며, 구현에 있어 싱글톤 패턴을 사용 할 수 있다.

프로토타입 패턴을 활용한 프로그래밍을 프로토타입 프로그래밍이라고 부를 수 있는데, 이는 클래스 기반 프로그래밍에서 상속을 이용해 객체간의 관계를 설정하는 것과 다르게 프로토타입(원형)을 기반으로 객체를 사용 하는 프로그래밍 기법이다.

Java에서는 Cloneable 인터페이스를 구현하여 프로토타입 패턴을 구현할 수 있다.

참고 : https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85_%ED%8C%A8%ED%84%B4