设计模式
一、享元模式(Flyweight)
说到享元模式,第一个想到的应该就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。https://www.cnblogs.com/betterboyz/p/9361793.html
https://www.cnblogs.com/adamjwh/p/9070107.html
二、观察者模式
Subject(主题/被观察者)、Observer(观察者)
主题
public interface Subject {
//注册观察者
void registerObserver(Observer obj);
//移除观察者
void removeObserver(Observer obj);
//当主题方法改变时,通知所有的观察者
void notifyObserver();
}
观察者接口
public interface Observer {
//当主题状态改变时,更新
public void update(int version);
}
主题实现类
public class ASubject implements Subject {
private List<Observer> observers;
@Override
public void addObserver(Observer obj) {
observers.add(obj);
}
@Override
public void deleteObserver(Observer obj) {
int i = observers.indexOf(obj);
if(i>=0){
observers.remove(obj);
}
}
@Override
public void notifyObserver() {
for(int i=0;i<observers.size();i++){
Observer o=(Observer)observers.get(i);
o.update(version);
}
}
}