프로그래밍(46)
-
[디자인패턴] 방문자패턴(visitor pattern)
방문자패턴(visitor pattern) 알고리즘을 객체 구조에서 분리 시키는 패턴멤버변수와 메서드를 다른 클래스로 분리하여 서로 간의 호출하게 함으로써 추후 메서드 추가를 자유롭게 한다 작성형식 내용 방문자 패턴은 컴포짓패턴과 같이 쓰는 경우가 많다. 위 사진에서 보면 좌측에 element를 구현하는 클래스를 다룰때 컴포짓 패턴을 이용하여 개별 객체와 그 객체들을 목록 형태로 가지고 있는 상위 객체를 구현하여 방문자 패턴을 구현하게 된다.일반적인 경우에 OOP에서는 객체 안에 멤버변수와 메서드를 같이 작성 하도록 하지만 방문자 패턴에서는 변수와 메서드를 분리하여 작성 하도록 하고 있다. 이와 비슷한 패턴 형식으로는 전략패턴, 커맨드패턴등이 있다. 이 패턴들과 차이점은 전략 패턴은 하나의 객체에 대하여 ..
2016.11.23 -
[JAVA] 클래스(class) / 객체(object)
클래스 / 객체 클래스란? 어떤 특정 종류의 모든 객체들에 대해 일반적으로 적용할 수 있는 변수와 메소드를 정의하고 있는 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype)실 세계에 존재하는 객체가 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로 추상화 한 것 객체란? 사전적 정의 : '실제로 존재하는 것'우리 주변에 흔히 볼 수 있는 사물들 '컴퓨터', '휴대폰', '책상', '의자' 등소프트웨어적 정의 : 클래스를 실제 사용할 수 있도록 변수 선언한 것을 인스턴스라하며, 이 인스턴스를 객체라 할 수 있다. 객체는 높은 모듈성과 정보은닉의 장점을 제공한다. 작성형식 위에 사진은 클래스에 대하여 조금 더 쉽게 다가가기 위한 사진으로 동일한 틀(클래스)을 가지고 붕어빵, 토스트..
2016.11.23 -
[디자인패턴] 데코레이터 패턴(Decorator pattern)
데코레이터 패턴(Decorator pattern) 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다 작성형식 내용 특징데코레이터의 부모클래스는 자신이 장식하고 있는 객체의 부모클래스와 같으며, 한 객체를 여러 개의 데코레이터로 감쌀 수 있다. 데코레이터는 자신이 감싸고 있는 객체와 같은 부모클래스를 가지고 있기 때문에 원래 객체가 들어갈 자리에 데코레이터 객체를 집어넣어도 상관 없다. 데코레이터는 자신이 장식하고 있는 객체에게 어떤 행동을 위임하는 것 외에 원하는 추가적인 작업을 수행할 수 있고 객체는 언제든지 감쌀 수 있기 때문에 실행에 필요한 데코레이터를 마음대로 적용할 수 있다.[펌]http://skmagic...
2016.11.21 -
[디자인패턴] 컴포짓패턴(Composite pattern)
컴포짓패턴(Composite pattern) 개별 객체와 복합 객체를 코드 상에서 별도로 구분하지 않고 추상화한 인터페이스를 구성하고 동일하게 다룰 수 있도록 한 패턴 작성형식 내용 Component컴포넌트 자신을 포함한 모든 컴포넌트에 대한 추상화이다.구성(composition)에 있는 객체들의 인터페이스를 정의한다.(선택적으로) component의 부모에 대한 접근하기 위한 재귀적인 구조(recursive structure)의 인터페이스를 정의하고, 적절하다면 구현한다.Leaf구성(composition)에 있는 leaf 객체들을 표현한다.component의 모든 메서드를 구현한다.Compositecomposite 컴포넌트를 표현한다.(자식들을 가지는 컴포넌트)자식들을 다루기 위한 메서드를 구현한다.모..
2016.11.19 -
[디자인패턴] 브릿지패턴(Bridge pattern)
브릿지패턴(Bridge pattern) 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게하는 작성형식 내용 브릿지패턴은 기능 클래스 계층과 구현 클래스 계층을 분리한 것입니다.각 클래스 간의 구조의 초점을 맞춘 형태라고 보면 좋을것 같다. [펌] 헤드퍼스트 내용 정리장점* 구현을 인터페이스에 완전히 결합시키지 않았기 때문에 구현과 추상화된 부분을 분리시킬 수 있다. * 추상화된 부분과 실제 구현 부분을 독립적으로 확장 할 수 있다. * 추상화된 부분을 구현한 구상 클래스를 바꿔도 클라이언트 쪽에는 영향을 끼치지 않는다.사용법 및 단점* 여러 플랫폼에서 사용해야 할 그래픽스 및 윈도우 처리 시스템에서 유용하게 쓰인다. * 인터페이스와 실제 구현부를 서로 다른 방식으로 변경해야 하는 경우에 유용하..
2016.11.19 -
[디자인패턴] 추상팩토리패턴(Abstract Factory pattern)
추상팩토리패턴(Abstract Factory pattern) 객체를 생성할 때 객체를 구성하는 부분을 추상화하여 여러 서브클래스가 상속을 통해 구현하여 구성하는 부분을 동일하게 유지하는 방법객체를 구성하는 클래스가 있을 때 생성 공정을 동일하고 구현 내용이 다를 때 메서드를 추상화하여 사용하는 것 작성형식 [출처] http://jinsprogramming.wikispaces.com/Abstract+factory+pattern?showComments=1 Product 관련 코드 public abstract class Product { public abstract String getName(); public abstract int getPrice(); @Override public String toStrin..
2016.11.17