设计模式之——设配器模式
适配器模式定义
适配器模式是将一个类的接口转化为另一种期待的接口,适配器让原本接口不兼容的类可以相互合作。适配器模式使用对象组合,以修改的接口包装被适配者,这样做的优点是被适配者的任何子类都可以搭配适配者使用。
Duck{
quick();
fly();
}
Turkey{
googa();
fly();
}
TurkeyAdapter imlements Duck{
Turkey turkey;
public TurkeyAdapter(turkey){
this.turkey = turkey;
}
public quick(){
turkey.googa();
}
public fly(){
turkey.fly();
}
}
Test{
public static void main(String[] args){
Turkey turkey = new WildTurkey();
TurkeyAdapter turkeyAdapter = new TurkeyAdapter(turkey);
turkeyAdapter.quick();
turkeyAdapter.fly();
}
}客户通过目标接口调用适配器的方法对适配器发出请求,适配器使用被适配者接口把请求装换成被适配者的一个或多个调用接口,客户接收到调用的结果,但是并未察觉这一切是适配器在起转换作用。
适配器有两种,一种是对象适配器,一种是类适配器,以上的代码是对象适配器,类适配器在java中并不适用,因为它使用的实现是多重继承,而java不支持多重继承,类适配器不是使用组合来适配适配者,而是继承被适配者(Turkey)和目标类(Duck)。外观模式
外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用,想要使用外观模式,我们创建一个接口简化而统一的类,用来包装子系统中一个或多个复杂的类,外观模式相当直接,外观模式允许我们让客户和子系统之间避免紧耦合,应当时刻牢记,外观模式的意图是提供一个简单的接口,好让一个系统更容易使用。
A{
on(){...}
}
B{
on(){...}
}
Unite{
A a;
B b;
public Unite(A a, B b){
this.a = a;
this.b = b;
}
public allOn(){
a.on();
b.on();
}
}编程原则
最少只是原则,当你在设计一个系统,不管是任何对象,你都要注意它所交互的类有哪些,并注意它和这些类是如何交互的,这个原则希望我们不要让太多的类耦合到一起,免得修改系统中一部分,会影响到其他部分,如果许多类之间相互依赖,那么这个系统就会变成一个易碎的系统,需要花许多成本维护,也会因为太复杂而容易被其他人了解。
缺点:虽然这个原则减少了对象之间的依赖,研究显示这会减少软件的维护成本,但是采用这个原则会导致更多多的包装类被制造出来,以处理和其他组件的沟通,这可能会导致复杂度和开发时间的增加,并降低运行时的性能。
内容来自 head first design pattern