Java与模式:适配器模式
目的:
将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
意图:
- 你想使用一个已经存在的类,而它的接口不符合你的需求。
- 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
- (仅适用于对象Adopter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
(目的和意图是不变的,摘自《设计模式迷你手册》电子版)
-
简单的适配器模型
-
-
<span style="font-family:FangSong_GB2312;font-size:18px;">/* 适配器模式:将一个类的接口转化成另外一个接口, 适配器模式使得原本由于接口不兼容而不能 一起工作的那些类可以一起工作。 **/ public class test_11 { public static void main(String[] args) { PowerA a = new PowerAImpl(); input(a); //用老方法input使用新接口 PowerB b = new PowerBlmpl(); //input(b);//不能这么用,因为input方法只能接收PowerA接口 //适配器的使用 PowerAadopter adopter = new PowerAadopter(b); input(adopter); } public static void input(PowerA a) { a.connect(); } } //接口适配器, 可以适配电源A的适配器 class PowerAadopter implements PowerA {// 说白了也就是继承A接口把A接口调换成B类,用A的方法调用B的方法 private PowerB b; public PowerAadopter(PowerB b) { this.b = b; } public void connect()//A的方法调用B的方法 { b.insert(); } } interface PowerB { public void insert(); } class PowerBlmpl implements PowerB { public void insert() { System.out.println("电源接口B开始工作"); } } interface PowerA { public void connect();//连接 } class PowerAImpl implements PowerA { public void connect() { System.out.println("电源接口A开始工作"); } }</span>