2008-10-26 13 views
10

스티브 예지 (Steve Yegge)는 최근 보편적 인 디자인 패턴이라고 불리는 것에 interesting blog post이라고 게시했습니다. 거기서 그는 프로토 타입을 클래스 대신 모델링 도구로 사용하는 방법을 자세히 설명합니다. 나는 이것이 상속에 비해 결합이 덜한 방식을 좋아한다. 그러나 이것은 상속 대신 다른 클래스의 관점에서 클래스를 구현함으로써 클래스로도 얻을 수있는 것입니다. 다른 누구도 프로토 타입 사용에 대한 성공 사례를 갖고 있으며 프로토 타입을 사용하는 것이 클래스와 비교하여 유리한 점을 설명하는 데 도움이 될 수 있습니다. 정적 모델링과 동적 모델링이 비슷하다고 생각합니다. 그러나 더 많은 예제를 환영 할 것입니다.프로토 타입 대 클래스

+0

의미, 프로토 타입 + 대표 == 클래스 + 상속 –

+0

오타 : OOP 클래스 기반 상속 (오리 타이핑의 부분 집합이다) 프로토 타입의 부분 집합 – Ken

답변

13

흥미로운 점 중 하나는 프로토 타입 기반 언어를 OO로 쉽게 만들 수 있지만 OO 언어를 프로토 타입 기반으로 만드는 것은 어렵다는 점입니다.

당신이 언급 한 것처럼 구성 대 상속을 제외하고는 프로토 타입이 어떻게 될지 완전히 명확하지 않습니다.

프로토 타입 언어는 복잡한 상속 행위를 쉽게 만듭니다. multiple inheritance, mixin과 같은 동작을 구현하거나 한 개체에서 다른 개체에 추가 할 동작을 선택하고 선택하면됩니다.

Wikipedia's article 언급 : "프로토 타입 기반 프로그래밍을지지하는 사람들은 클래스 기반 언어가 분류와 클래스 간의 관계에 우선적 인 초점을 둔 개발 모델을 권장한다고 주장합니다. 반대로 프로토 타입 기반 프로그래밍은 프로그래머에게 고무적인 것으로 보여집니다 몇몇 예제 집합의 동작에 초점을 맞추고 나중에이 객체들을 나중에 클래스와 비슷한 방식으로 사용되는 원형 객체로 분류하는 것에 대해 걱정할 필요가 있습니다. "

프로토 타입 패러다임은 장단점이 없다는 것은 아닙니다. OO가 더 제한적이라면 그것이 선택되기 때문입니다. 조심하지 않으면 모든 융통성이 문제를 일으키는 곳을 알 수 있습니다.

3

프로토 타입은 상속의 한 형태입니다. 프로토 타입은 다른 클래스에서 상속받은 클래스의 특성 및 동작을 가져 오는 대신 속성 및 동작을 다른 개체에서 직접 상속합니다.

예를 들어 JavaScript와 같이 prototype based language에있는 객체 지향 코드를 확인하십시오.

+0

을해야한다 나를. 나는 프로토 타입이 상속의 한 형태이고 클래스/서브 클래스가 또 다른 형태라고 말하고있다. 나는 "다른 하나의 질문으로 구현 될 수있는 전체"에 들어가려고하지는 않았다. – Javier

+0

난 당신이 오해 생각입니다 : Yeggie는 거꾸로이 Yegge – Glomek

1

관심있는 사람들을 위해 NewtonScript은 이중 언어였습니다. 프로토 타입이 있고 수업을 들었습니다. 프로토 타입 또는 두 가지 모두에서 클래스를 상속할지 여부를 선택할 수 있습니다.