[Design pattern]: 设计模式相关系列
介绍 意图: 将一个类的接口转换成客户希望的另外一个接口。 A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。别名: 包装器 Wrapper动机: 有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。应用场景: 需要使用到老的类,但是不符合新接口规则的时候,就是适配器出场的时候了
CODE
老的类
1 2 3 4 5 6 7 package note.com.adapter;public class OldActionA { public void start () { System.out.println("start开始工作" ); } }
新的类基类
1 2 3 4 5 package note.com.adapter;public interface NewAction { public void run () ; }
新的类实现
1 2 3 4 5 6 7 package note.com.adapter;public class NewActionB implements NewAction { public void run () { System.out.println("run开始工作" ); } }
新的调用规则
1 2 3 4 5 6 7 8 package note.com.adapter;public class NewClient { public void userDo (NewAction action) { action.run(); } }
符合新的调用规则的老类适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 package note.com.adapter;public class NewAdapter implements NewAction { private OldActionA a = null ; public NewAdapter (OldActionA a) { this .a = a; } public void run () { a.start(); } }
测试类
1 2 3 4 5 6 7 8 9 10 11 12 package note.com.adapter;public class AdapterTest { public static void main (String[] args) { NewClient client = new NewClient (); NewActionB newB = new NewActionB (); client.userDo(newB); OldActionA oldA = new OldActionA (); NewAdapter newA = new NewAdapter (oldA); client.userDo(newA); } }
结果