디자인 패턴의 필요성 4
"A에는 B이다 " 보다 "A에는 B가 있다"

디자인 원칙 : 상속보다는 구성을 활용한다.

지금까지 봐 왔던 것처럼, 구성을 이용하여 시스템을 만들면 유연성을 크게 향상시킬 수 있다. 단순희 알고리즘군을 별도의 클래스의 집합으로 캡슐화할 수 있도록 만들어주는 것 뿐 아니라, 구성요소를 사용하는 객체에서 올바른 행동 인터페이스를 구현하기만 하면 실행시에 행동을 바꿀 수도 있게 해준다.


사부와 제자...

사부 : 지금까지 네가 배운 객체지향 토에 대해서 얘기해 보거라.
제자 : 사부님, 객체지향 도에서는 재사용을 약속해 준다고 배웠습니다.
사부 : 계속해 보거라...
제자 : 사부님, 상속을 이용하면 모든 훌륭한 것들을 재사용 할 수 있기 때문에 개발 시간을 극적으로 단축시켜 줍니다.
사부 : 개발이 끝나기 전과 개발이 끝난 후 중 어느 쪽에서 코드에 더 많은 시가을 쓰게 되느냐?
제자 : 개발이 끝난후 입니다. 유지, 보수하는데 더 많은 시간을 뺏기게 됩니다. 심지어 다시 만들기도...
사부 : 그러면 관리의 용이성과 확장성보다 재사용성에 더 많은 노력을 기울여야 하느냐?
제자 : 음....
사부 : 아직 배워야 할 것이 많구나. 돌아가서 상속에 대한 명상을 더 하도록 하거라.
      너도 보았듯이 상속에는 상속만의 문제점이 있고, 재사용을 성취하는 데에는 다른 방법도 있느리라.



객체지향의 기초

추상화, 캡술화, 다형성, 상속



객체지향 원칙

바뀌는 부분은 캡슐화한다.
상속보다는 구성을 활용한다.
구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.



스트래티지 패턴(strategy pattern)

알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지 패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다.


- 이 종 화 (ingenuity.egloos.com) -
by 이종화 | 2006/03/24 17:43 | Design Patterns | 트랙백(1) | 덧글(0)
트랙백 주소 : http://ingenuity.egloos.com/tb/1679483
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Bullshit Life at 2007/02/26 03:06

제목 : inheritnace vs delegation
디자인 패턴의 필요성 4 http://lmaaya.cafe24.com/moni/wiki.php/CompareTemplateMethodWithStrategyPattern TemplateMethod와 StrategyPattern을 비교하면 상속과 위임의 차이를 알 수 있다. 두 패턴 모두 인터페이스를 통한 알고리즘 추상화를 실현하고 있지만 재사용성에는 차이가 있다. TemplateMethod는 상속을 이용했기 때문에 ......more

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >