Pét*_*son 4 java oop design-patterns software-design
以下是我正在进行的项目的简化.
我们有Talker niceTalker
谁说"早上好!我的名字是乔".然后我们有一个schitzophrenic rudeTalker
,谁说"他就是我".
我花了一段时间来理解代码的作用.对我来说,这似乎是压倒一切的非常复杂的方式Talker
小号talk()
方法.更多,TalkModifier
用作命令模式中的命令(未示出).
为什么采用这种方法,而不是通过继承说多态?这是一个已知的模式,哪一个?
public interface Talker {
String getName();
void talk();
}
Run Code Online (Sandbox Code Playgroud)
-
public interface TalkModifier {
public Talker modify(Talker talker);
}
Run Code Online (Sandbox Code Playgroud)
-
class NiceGuy implements Talker {
@Override
public void talk() {
System.out.println("Good morning! My name is " + getName() +".");
}
@Override
public String getName() {
return "Joe";
}
}
public class Application {
public static void main(String[] args) {
Talker niceTalker = new NiceGuy();
TalkModifier rudeTalker = new TalkModifier() {
public Talker modify(final Talker talker) {
return new Talker() {
@Override
public void talk() {
System.out.println("He is me.");
}
@Override
public String getName() {
return talker.getName();
}
};
}
};
niceTalker.talk();
System.out.println();
rudeTalker.modify(niceTalker).talk();
}
}
Run Code Online (Sandbox Code Playgroud)