个人笔记,请不要被误导。
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
遵循原则:最少知识原则:只和朋友交谈。不要让太多类耦合在一起,免得修改系统一部分,会影响到其他部分。
方针:就任何对象而言,在该对象方法内,我们只应该调用属于以下范围的方法:
该对象本身的方法;
该对象的任何组件的方法;
被当做方法参数而传递过来的对象的方法;
此方法所创建或实例化的任何对象的方法。
让我们的朋友圈子维持在最小状态。
个人感觉这个方法和命令模式里调用一系列命令的命令类有点相似。大概这算是它们的结合吧。命令模式着眼于封装算法调用(之前写成了封装算法,封装算法是模板方法模式的作用。之前写错了,非常抱歉)使客户和命令执行者解耦,外观模式着眼于提供一个高层接口使客户和复杂子系统解耦。
public interface ElectricalAppliance {
public void on();
public void off();
}
public class Stereo implements ElectricalAppliance {
public static final int DOWN = 3;
public static final int MEDIUM = 5;
public static final int UP = 8;
@Override
public void on() {
}
@Override
public void off() {
}
public void turnUp(){};
public void turnMedium(){};
public void turnDown(){};
public void setVolumn(int volumn){};
public int getVolumn(){return 0;};
}
public class TV implements ElectricalAppliance {
@Override
public void on() {
}
@Override
public void off() {
}
}
public class HomeTheaterFacade {
TV tv;
Stereo stereo;
public HomeTheaterFacade(TV tv,Stereo stereo){
this.tv = tv;
this.stereo = stereo;
}
public void watchTV(){
tv.on();
stereo.on();
}
}