我有
public class mammal implements Imammle
{
    public String getName() {
        return "Mammal";
    }
    public String speak() {
        return getName() +  "Maaaauuu";
    }
}
我需要知道我的动物何时发出声音,以便我可以实时采取相应的行动,例如吃饲料。
我应该使用什么样的设计模式?谢谢。
我有
public class mammal implements Imammle
{
    public String getName() {
        return "Mammal";
    }
    public String speak() {
        return getName() +  "Maaaauuu";
    }
}
我需要知道我的动物何时发出声音,以便我可以实时采取相应的行动,例如吃饲料。
我应该使用什么样的设计模式?谢谢。
观察者设计模式可以用来解决你的问题。在观察者模式中,有两种不同类型的对象:
观察者注册了他们希望观察的Observable对象。每当Observable对象发生变化时,它都会通知所有已注册的Observers 。
根据您的代码示例,我将假设您使用的是 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");
    }
}
最后,我们用 a 注册我们的观察者,mammal以便在它发生变化时通知他们。
public class Main
{
    public static void main(String args[]) {
        mammal cow = new mammal();
        Watcher farmer = new Watcher();
        cow.addObserver(farmer);
        cow.speak();
    }
}
这种方法有很多缺点:
mammals。另一方面,您可能希望只有某些类型的观察者能够观察mammal.Observer的到底发生了什么变化mammalmammal某种消息传递给观察者mammal如果这些缺点中的任何一个对您来说是个问题,那么您可能希望避免Observer并Observable考虑修改现有的类(mammal以及无论您Observers是什么)以实现它们自己的、特定于应用程序的方法。