http://kangcom.com/common/bbs_review/bbs_read.asp?seqid=3164&fst_code=

http://www.devpia.com/forum/BoardView.aspx?no=958&ref=958&page=1&forumname=and_free&stype=
http://occam.n4gate.com/tt/index.php
http://www.artima.com/lejava/articles/designprinciplesP.html


위의 링크는 GoF의 디자인 패턴에서 나오는 문구 'Favor object composition over class inheritance. '에 대한 토론의 글이다. 번역자와 독자간의 번역에 대한 인식차이로 시작된 이 문구의 이해가 이 상황을 알고 있는 사람들에게 엄청난 이해도를 높였다.

즉, 'Favor A over B' 라는 숙어의 의미와 'over A'의 A 기반이라는 뜻의 의미가 모호해지면서 나름대로 토론이 되었다. 객체의 상속기반위의 상속을 선호하다 라는 의미인지, 클래스 상속대신 객체의 합성을 선호하라, 또는 더 낫다 라는 세 의미가 수반되는 모호한 의미를 가지게 되었다

inheritace가 inteface inheritace와 class inheritance의 두 의미로 나눠지게 되는 의미는 당시 GoF가 C++의 영향을 많이 받았다는 사실을 인지했어야 한다. 70-80년대에서 객체지향의 개념이 널리 알려지게 되고, 프로그래머들이 상속을 너무 남발하던 차에 GoF가 디자인패턴을 발표하였다.

C++을 기반으로 하는 GoF의 디자인 패턴이기 때문에 class나 interface의 모호한 상속이 GoF에게 영향을 미쳤고, 후에 자바에도 큰 영향을 미쳤으리라 생각이 된다. 자바처럼 interface와 class가 명확하게 나누어져 있기 까닭에 subclassing, subtyping이라는 상속개념이 명확했더라면, 지금처럼 토론이 되지 않을 수도 있다.

하여튼, 결론은 GoF의 디자인 패턴의 문구가 당시로서는 맞는 말이지만, 자바나 파이썬, 루비 객체 지향의 다양한 언어가 사용에 타이밍적으로 모호한 문구가 될 소지가 있음을 잘 발견하였고, 서로 유익한 정보들을 나누었으리라 생각이 된다.

'철학' 카테고리의 다른 글

Why language standards are important.  (0) 2006.07.20
글쓰기의 어려움  (0) 2006.07.20
Favor object composition over class inheritance.  (0) 2006.07.20
개발시 실수할 만한 것들  (0) 2006.07.20
디자인-요구사항 파악하기-3  (0) 2006.07.20
Project Management Office (PMO)  (0) 2006.07.20
Posted by '김용환'

댓글을 달아 주세요