首页 > 代码库 > 设计模式(七) : 结构型模式--适配器模式
设计模式(七) : 结构型模式--适配器模式
适配器模式主要是为了解决接口不符合系统需要的问题。分成类的适配器和对象的适配器。
1. 类的适配器:
示意性代码:
package com.javadesignpattern.Adapter; public interface Target { public void sampleOperation1(); public void sampleOperation2(); }
package com.javadesignpattern.Adapter; public class Adaptee { public void sampleOperation1() { System.out.println(Adaptee.class + " : sampleOperation1"); } }
?
1 2 3 4 5 6 7 8 9 10 | package com.javadesignpattern.Adapter; public class Adapter extends Adaptee implements Target{ public void sampleOperation2() { // TODO Auto-generated method stub System.out.println(Adapter. class + " : sampleOperation2" ); } } |
package com.javadesignpattern.Adapter.Class; public class Client { public static void main(String[] args){ Target target = new Adapter(); target.sampleOperation1(); target.sampleOperation2(); } }
2. 对象的适配器
示意性代码:
Target类和Adaptee类和上面的类的适配器是一样的
package com.javadesignpattern.Adapter.object; public class Adaptor implements Target{ private Adaptee adaptee; public Adaptor(Adaptee adaptee){ super(); this.adaptee = adaptee; } public void sampleOperation2() { // TODO Auto-generated method stub System.out.println(Adaptor.class + " : sampleOperation2"); } public void sampleOperation1() { // TODO Auto-generated method stub adaptee.sampleOperation1(); } }
?
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.javadesignpattern.Adapter.object; public class Client { public static void main(String[] args){ Adaptee adaptee = new Adaptee(); Target target = new Adaptor(adaptee); target.sampleOperation1(); target.sampleOperation2(); } } |
对象适配器和类的适配器的优缺点:
1. 类的适配器使用继承,是一种静态的适配方式; 对象的适配器是利用组合,是一种动态的适配方式;所以,类的适配器只是适配了这一个类,Adapter类和Adaptee类的子类是不能一块工作的;对象的适配器的话,adapter类和adaptee类的子类是可以一起工作的。
2. 类的是适配器是可以重定义Adaptee的部分行为的(重写),而对象的适配器的话,重定义比较困难,但是增加一些方法比较简单。
对于尽量使用合成、聚合的方式而不是使用继承,推荐使用对象的适配器。但是具体情况具体分析。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。