2014-12-20 3 views
0

이미 구현 된 많은 Java 클래스가 있습니다. 이 클래스에 몇 가지 동작을 추가하고 싶습니다. 어떤 경우에는이 동작이 모든 클래스에서 동일 할 수 있습니다. 또한 모든 클래스가 이미 구현되었으므로 수퍼 클래스를 만들 수 없다고 가정합니다.여러 클래스가 인터페이스 구현을 공유 할 수 있습니까?

내가 갖고있는 질문은이 점에 대해 어떤 옵션이 있는지입니다.

인터페이스 : 일부 인터페이스의 경우 한 번 구현하면 클래스가 단일 구현을 공유 할 수 있습니까 (경우에 따라 모든 클래스에 대해 동일한 구현이 필요하기 때문에). 이렇게하면 모든 클래스에서 수동으로 코드가 중복되는 것을 방지 할 수 있습니다.

추상 클래스를 정의하고 클래스가 추상 클래스를 확장하도록 생각했습니다. 문제는 하위 클래스가 의미있는 계층 구조를 형성하지 않기 때문에 하위 클래스가 추상 클래스의 의미있는 확장이되지 않는다는 것입니다.

감사합니다.

+0

글쎄, 클래스를 작성하여 동작을 구현 한 다음 해당 클래스를 각 클래스의 비공개 멤버로 만들고 그 클래스에 대한 인터페이스 메소드. Java에서는 수동으로 수행해야합니다 (개인 클래스를 호출하는 둘러싸는 클래스 만 있으면됩니다). 일부 IDE는이 위임 코드를 작성합니다. – markspace

답변

0

"위임"패턴을 사용할 수 있습니다. 추가 할 비헤이비어를 정의하는 메소드 (또는 메소드)와 비헤이비어의 각 변형에 대한 구현 클래스를 사용하여 새 인터페이스를 정의하십시오. 기존 클래스 각각에 필요한 구현 클래스의 인스턴스를 참조하게하십시오. "위임 패턴"에 대한 위키 피 디아 페이지에는 Java 및 다른 언어로 된 간단한 예제가 있습니다. https://en.wikipedia.org/wiki/Delegation_pattern

+0

감사합니다. 나는 위임 패턴이 그 일을 할 것이라고 생각한다. – user3217644

2

인터페이스 메소드의 구현이 구현 클래스의 구성원에 종속되지 않고 Java 8을 사용하는 경우 인터페이스의 메소드에 기본 구현을 제공 할 수 있습니다.

관련 문제