우선, "또 다른 인터페이스 질문"에 대해 사과드립니다. 나는이 질문이 가치있는 것일지도 모른다고 생각했지만 이상한 문제였다. 내가 사용하고있는 프로젝트는 Actionscript 3을 사용하지만, 이것은 일반적인 OOP 질문에 더 가깝습니다. 여기 동일한 구현 코드를 인터페이스와 재사용하지 않으려면 어떻게해야합니까?
상황입니다 : 이미 기본 클래스에서 상속되는 클래스가; 그것은 비디오 게임의 대상입니다. (그것이 우주선이라고 가정 해 봅시다.) 제 게임에서는 스크린 상 많은 우주선을 한 번에 가지고 싶기 때문에 링크드 목록 구조를 사용하여 객체 풀을 생성하기로 결정했습니다.
실제로 Spaceship 클래스는 기본 클래스에서 상속 받았기 때문에 인터페이스를 사용하여 연결된 목록과 관련된 메서드를 정의했습니다. 추가적으로이 메소드를 클래스 Asteroid 나 클래스 Bullet 또는 클래스 Particle과 같은 다른 클래스로 확장 할 수 있습니다.
다음은 문제입니다. 인터페이스의 강점은 필요한 것을 기반으로 사용하는 모든 클래스에 대한 구현을 재정의 할 수 있다는 것입니다. 그러나 연결된 목록과 같은 항목의 경우 코드는 클래스간에 변경되지 않습니다. 이러한 객체 풀 메소드를 구현할 많은 클래스를 계획하고 있으므로 새로운 클래스마다 동일한 구현 코드를 반복해서 사용하지 않는 것이 좋습니다.
질문 : 내가 사용하는 각 클래스에 대해 똑같은 연결 목록 코드를 재사용하지 못하도록하는 방법이 있습니까? 아니면 그냥 피할 수없는 것입니까? 이것이 한 번만 한 원칙에 위배되는 것 같습니다. 프로토 타입 대신 상속 블록 내에서 전체 함수를 정의 할 수 있습니까?
어리석은 질문 인 경우 알려주세요. (만약 내가 그 것인지 아닌지 묻는다면 그것은 아마 그렇지만 어쩌면 어리석은 짓을하지 않고서도 배울 수는 없을 것입니다.) 이런 식으로하는 좀 더 논리적 인 방법이있는 것 같습니다.
또한 공통 기본 클래스 방식을 사용하면 인터페이스가 강제로 수행해야하는 여러 구현의 유연성을 잃지 않았습니다. 하위 클래스가 필요한 경우 연결된 목록 비헤비어를 구현하는 함수입니다. 하지만 당신은 아마 그렇게하지 않을 것입니다. 그래서 나는 기본 클래스가 여기의 인터페이스보다 낫다고 생각하는 이유입니다. –
예. 솔직히, 나는이 이유 때문에 다중 상속을 희망했지만 많은 사람들이 그것을 싫어하는 것 같습니다. 나는 그것이 악하다고 생각하지 않는다. 그것은 단지 오해 된 것이다. 저는 실제로 Actionscript의 거대한 상속 나무를 좋아하지 않습니다. 그 필요성을 이해 합니다만, 필요한 몇 가지 방법을 얻기 위해 기본 클래스를 트리에 삽입해야한다는 점이 마음에 들지 않습니다. 그래도 액션 스크립트 3 방식으로 보입니다. –
다른 문제는 Sprite 또는 다른 내장 함수를 확장하면 Flash의 핵심 클래스를 확장 할 필요가없는 클래스가있을 때 어떤 일이 발생합니까? 나는 그 문제에 대해 잠시 숙고하고있었습니다. 전체 클래스의 모든 기능이 필요할 때만 상속 받아야한다고 생각합니다. 기본 구현을 가지고 기본 클래스 * 및 * 풀 인터페이스를 사용하려고 생각했지만 자체적 인 문제 세트 (각 접근 방법의 개별 문제 포함)가있는 것처럼 보입니다. 나는 총알을 물고 옵션 A를 사용해야 할 것 같아요. 당신의 의견을 감사하십시오. –