'Architecture/Design Pattern'에 해당되는 글 6건

  1. 2012.11.13 패턴의 구성
  2. 2012.10.23 architecture pattern
  3. 2012.10.18 Double Dispatch and Visitor pattern
  4. 2012.05.20 리팩토링 요약
  5. 2012.05.13 SOLID원칙
  6. 2010.03.13 Design Pattern 요약파일

패턴의 구성

[디자인패턴의 기본 구성요소]

1. 정황(Context) : 문제를 발생시키는 어떤 상황,정황

2. 문제(Problem): 해당 상황에서 발생되는 문제점

3. 해법(Solution): 해당 문제에 대해서 검증된 해결안 (resolution)


'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13

architecture pattern

http://en.m.wikipedia.org/wiki/Architectural_pattern_(computer_science)#Examples


iPhone 에서 작성된 글입니다.

'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13

Double Dispatch and Visitor pattern

* Visitor 패턴의 목적:  

   처리행위를 데이터 구조에서 분리하는 것

 > 구조를 유지하는 것과 구조를 기초로 한 처리를 수행하는 것은 별개임 

 > 데이터의 구조를 유지하면서 새로운 처리를 추가할 경우 (구조와 행위의 독립성 유지)

 > OCP(The Open-Closed Principle)의 원칙에 따름



* Double Dispatch

 Dispatch 가 연속으로 일어나는 것으로 A에 파라메터로 B를 넘기면, B에서 본인을 파라메터로

 다시 A를 호출하는 형태임. Visitor 패턴에서처럼 데이터의 구조와 처리행위를 분리하는 

 목적으로 사용이 될 수 있음.


 public interace A(

   public void methodA(B b);

 }

 

 public class Aimpl implement A{

   public void methodA(B b){

       System.out.println("Hello~ " + b.getName());

   }

 }


 public class B{

    public void methodB(A a){

        a.methodA(this);

    }

    public String getName(){

return "B";

    }

  }


 A a = new Aimpl();

 B b = new B();

 b.methodB(a);  //행위 a를 넘기면, b에서 행위 a를 수행




'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13

리팩토링 요약

- 정의: 본 프로그램의 동작은 변하지 않고 프로그램 내부의 구조를 개선

- Bad Smells in Code : 이해하기 어려움, 수정하기 어려움, 확장이 어려움


소규모의 리팩토링

1. 매직넘버를 심볼릭 상수로 치환

2. 제어 플러그의 삭제

3. assertion의 도입

4. NULL 오브젝트의 도입


중규모의 리팩토링

5. 메소드의 추출

6. 클래스의 추출

7. 타입코드를 클래스로 치환

8. 타입코드를 서브클래스로 치환

9. 타입코드를 State/Strategy로 치환

10. 오류코드를 예외로 치환


대규모의 리팩토링

11. 생성자를 Factory Method로 치환

12. 관찰되는 데이터의 복제

13. 상속을 위임으로 치환

14. 위임의 은폐

15. 상속의 분할

'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13

SOLID원칙

SOLID  원칙

1.  단일 책임의 원칙 (SRP : Single Responsibility Principle)
   객체는 하나의 책임 – 억지로 나누지는 말것
   마치 DB의 정규화 와도 비슷하다. 더 좋은것은 성능저하라는 부작용이 없다.

2.  개방폐쇄 원칙 (OCP : Open – Close Principle)
   모듈은 확장에는 열려고 변경에는 닫혀있어야 함
   즉 메소드 단위의 오버라이딩, command 등을 이용한 확장 포인트를 두어 확장이 용이해야 한다.
   기본 코드에는 손을 대지 않고 시스템을 수정할 수 있어야 한다. => if/switch보다는 다형성을 활용.

3. 리스코프 대체 원칙 (LSP : Liskov Substitutuin Principle) 

   슈퍼 클래스는 파생 클래스로 대체 가능해야 한다. 즉 인터페이스만 알면 구현체를 몰라도 사용 가능해야
  무분별한 상속을 방지하기 위해서 검증해야 함


4. 인터페이스 분리의 법칙 (ISP : Interface Segregation Principle)

   각 클라이언트에 특화된 인터페이스를 작성함.  여러개의 인터페이스가 하나의 범용 인터페이스보다 낫다.
   (범용 인터페이스인 "그루비 클로저"와는 용도가 다름)

5.  의존 관계 역전의 법칙 (DIP : Dependency Inversion Principle)

  클라이언트는 구체 클래스가 아닌 인터페이스나 추상 클래스에 의존해야 한다.

    => 변화의 충격에서 좀더 자유로울 수 있다. 즉 Bridge패턴 처럼 인터페이스/추상 클래스 끼리만 서로 의존관계를 가지며 참조하자는 이야기이다. 


http://davesquared.net/2009/01/introduction-to-solid-principles-of-oo.html



'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13

Design Pattern 요약파일

출처는 기억이 나지 않지만 간략하게 정리된 디자인패턴 카드 요약파일입니다.


'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13