作用:适配器:将一个接口转换成另一个接口,让不兼容的接口合作无间。外观:提供一个统一的接口来访问子系统的一群接口,将复杂的调用对外简化。
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就行了。
至于外观模式,就更简单了,比如我想吃饭,我要依次调用煮饭、炒菜、做汤的接口。而外观模式就是提供一个统一的吃饭接口,该接口内部调用了煮饭、炒菜、做汤的接口。所以我们要吃饭的话直接调用一个吃饭接口就行了,简化了接口调用。
网友评论