码农小汪-设计模式之-观察者模式 依赖倒置原则
观察者模式观察者模式属于 行为型模式。(嘎嘎嘎,刚刚吃饭哦!) 大话设计模式例子: 双向耦合的哦什么叫双向的耦合,之前我学习Hibernate的时候,有个双向关联,1-N的双向关联。双方都依赖于对方哦。 讲偏我们的学习的方向啦~~对哈!双向的关联,都要向对方注入依赖关系。 //看看就好了,理论的东西!慢慢的理解 例子: 前台的妹子哦,我们要向她绑定哦,绑定过了,人家才会通知你。好比你要和她搭理好关系哦 import java.util.ArrayList;
import java.util.List;
public class Subject {
private List<Observer> observers //那一群汉子
= new ArrayList<Observer>();
private int state;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
notifyAllObservers();//一有 动静,就去通知欧
}
public void attach(Observer observer){// 订阅差不多的意思!
observers.add(observer);
}
public void notifyAllObservers(){//通知所以得人
for (Observer observer : observers) {
observer.update();
}
}
}
观察者,感觉这个名字取得不好。不应是观察者,应该是被通知的对象哦。订阅者之类的。就是我们那些汉子!抽象哦,为啥。自己考虑 public abstract class Observer {
protected Subject subject;
public abstract void update();
}
具体的类,可能是Java开发中,可能是游戏开发者,可能是C++开发者 public class BinaryObserver extends Observer{
public BinaryObserver(Subject subject){
this.subject = subject;
this.subject.attach(this);//注入依赖欧
}
@Override
public void update() {
System.out.println( "Binary String: "
+ Integer.toBinaryString( subject.getState() ) );
}
}
public class OctalObserver extends Observer{
public OctalObserver(Subject subject){
this.subject = subject;
this.subject.attach(this);
}
@Override
public void update() {
System.out.println( "Octal String: "
+ Integer.toOctalString( subject.getState() ) );
}
}
Domo public class ObserverPatternDemo {
public static void main(String[] args) {
Subject subject = new Subject();
new HexaObserver(subject);//attach注入依赖哦!
new OctalObserver(subject);
new BinaryObserver(subject);
System.out.println("First state change: 15");
subject.setState(15);//只要有变化~老板来了!快跑~~
System.out.println("Second state change: 10");
subject.setState(10);
}
}
大话模式中的定义: 使用场景: 1、有多个子类共有的方法,且逻辑相同。 2、重要的、复杂的方法,可以考虑作为模板方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |