设计模式之行为型设计模式
-
最少知识原则 :我知道很少其他类的事情,不触及其他类的领域 -
依赖倒置原则:从依赖具体,变成我提供出要求,让别的类实现 -
单一职责原则:只做自己领域的事情 -
里氏替换原则:针对继承,不重写父类的实现,如果要实现多态度使用抽象 -
接口隔离原则:接口应该尽量的少,做的事情尽量的耦合低 -
开闭原则:对扩展开放,对修改关闭
行为模式
- 类行为模式:继承
- 对象行为模式:组合
模版模式
public abstract coffe(){
public void drink(){
this.hot();
this.run();
}
public void abstract hot();
public void abstract run();
}
策略模式
命令模式
责任链模式
public class AbstractWebFilter{
public AbstractWebFilter abstractWebFilter;
public boolean isPass(Http http){
is(this.boolPass(http) && this.abstractWebFilter!=null){
return abstractWebFilter.isPass();
}
return this.boolPass(http);
}
private boolean abstract boolPass(Http http);
}
状态模式
public interface buy{
public void buy();
}
class beforeSell impl buy{
private Mail mail;
public void buy(){
System.out.println("我已经买完了");
mail.state = afterSell;
}
}
class afterSell impl Buy{
private Mail mail;
public void Mail(){
System.out.println("你已经买过了")
}
}
class Mail{
public state;
public Mail(Buy buy){
this.state = buy;
}
public Mail sell(){
this.state.buy();
retrun this;
}
}
new Mail(new BeforeSell()).buy().buy();
观察者模式
public class observer(){
private LIst<Subject> subjets = Lists.newArrrayList();
public void notifyAll(){
}
}
public interface Subject(){
public void notify();
}
中介者模式
迭代器模式
访问者模式
public interface vistor{
public int buyHouse(House house);
}
public class Seil{
private Vistor vistor;
List<House> houses = Lists.newArrayList();
public int BuyHouse(int i){
return vistor.buyHouse(house.get(i));
}
}
class T impl vistor{
public int buyHouse(House house){
return house.price
return house.price * 0.9;
return house.price * 0.6
}
}
seil.setVisitor(new 2_vip());
seil.buyHouse(1);
备忘录模式
|