I have
public class mammal implements Imammle
{
public String getName() {
return "Mammal";
}
public String speak() {
return getName() + "Maaaauuu";
}
}
我需要知道我的动物何时发出声音,以便可以及时采取相应的行动,例如喂食。
我应该使用哪种设计模式?
I have
public class mammal implements Imammle
{
public String getName() {
return "Mammal";
}
public String speak() {
return getName() + "Maaaauuu";
}
}
我需要知道我的动物何时发出声音,以便可以及时采取相应的行动,例如喂食。
我应该使用哪种设计模式?
Observer 设计模式可能可用于解决您的问题。在观察者模式中,有两种不同类型的对象:
观察者 会向他们希望观察的 Observable 对象注册。每当一个 Observable 对象发生更改时,它会通知所有已经注册的 观察者。
根据您的代码示例,我将假设您正在使用 Java。在这种情况下,您可以使用 Observer 和 Observable 来减少对现有代码所需进行的更改数量。
public class mammal extends java.util.Observable implements Imammle
{
public String getName() {
return "Mammal";
}
public String speak() {
setChanged(); // We have been changed
notifyObservers(); // Notify everyone that we have changed
return getName() + "Maaaauuu";
}
}
public class Watcher implements java.util.Observer
{
public void update(Observable o, Object arg) {
System.out.println("Something has changed");
}
}
mammal
中,这样它们就可以在其发生变化时被通知。public class Main
{
public static void main(String args[]) {
mammal cow = new mammal();
Watcher farmer = new Watcher();
cow.addObserver(farmer);
cow.speak();
}
}
如果以上任何一个缺点对您造成问题,则可能需要避免使用观察者和可观察对象,并考虑修改现有类(哺乳动物和您的观察者)以实现其自己的应用程序特定方法。