适配器模式与外观模式

2018-02-09  本文已影响0人  柚子过来

作用:适配器:将一个接口转换成另一个接口,让不兼容的接口合作无间。外观:提供一个统一的接口来访问子系统的一群接口,将复杂的调用对外简化。

Example:
适配器模式什么时候用呢,如果涉及到两个接口之间的调用,但是两个接口不兼容,比如方法参数不匹配啥的,但是我们又不想修改任何一方的接口,这个时候适配器就可以大显身手了:

public class Server {
public void cook(String[] item) {    //server端的cook方法接受的是String[]
    //cook with item
}
}

public class  Client {
List<String> item ;
Server server;
Client(List<String> item,Server server) {
    this.item = item;
    this.server = server;
}

public void cook() {
    server.cook(item); //这里肯定不行啊,因为client的item是个List
}
}

那client和server的代码都不想修改怎么办,加个适配器呗:

public class Adapter {
Server server;
   public Adapter(Server server) {
   this.server = server;
   }
    public void cook(List<String> item) {
   String[] strings = (String[]) item.toArray();
   server.cook(strings);
}
}

这样client端只要调用Adapter的cook方法就行了,如果接口变了,也只要修改Adapter就行了。

至于外观模式,就更简单了,比如我想吃饭,我要依次调用煮饭、炒菜、做汤的接口。而外观模式就是提供一个统一的吃饭接口,该接口内部调用了煮饭、炒菜、做汤的接口。所以我们要吃饭的话直接调用一个吃饭接口就行了,简化了接口调用。

上一篇下一篇

猜你喜欢

热点阅读