外观模式
用一个接口,简化子类系统中的一群复杂的接口调用。
外观模式,并没有封装原先的子系统,其只是提供另外的简化接口,代替原先对于子系统的复杂调用。外观模式将客户代码从子系统中解耦,任何对子系统的升级都不会影响客户原先的代码内容。
适配者的意图是改变接口,外观的意图是简化接口,装饰的意图是增加类的功能。
最少知识原则
减少对象之间的交互。可以这样理解,我们不要调用组件内部组件的方法,这样会将对象的朋友圈限制在最小的状态,减少互相影响的交叉耦合。而对象内创建的组件,通过方法参数传入的组件的方法都是可以调用的。
外观模式客户只需知道一个外观对象,并调用其方法即可。当外观对象内的接口发生更改时,并不会影响客户代码,这就是最少知识原则的威力。当然最少知识原则会造成过多的对象包装,会对性能和代码复杂度产生影响。因此要有一个折衷处理。
总结
外观模式,当客户端调用很多子系统来完成一个功能时,就会增加客户端和子系统的耦合性。因此用外观模式将这一个功能的复杂接口调用简化成一个接口的调用,当子系统升级的时候,就不会改变客户端代码,达到解耦的目的。
抽离变化:变化的是厂商代码的子系统,不变的是客户端代码。