适配器模式
将某个类的接口转换成客户端期望的另一个接口表示。使得原本由于接口不兼容而不能一起工作的那些类能在一起工作。
类适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
public class 类适配器 { public static void main(String[] args) { 充电器 phone = new 手机(); System.out.println(phone.高压转低压()); } }
class 高压电{ public int 插座(){ int output = 220; return output; } } interface 充电器{ int 高压转低压(); } class 手机 extends 高压电 implements 充电器{
@Override public int 高压转低压() { int 高压电 = 插座(); int 低压电 = 高压电/44; return 低压电; } }
|
或者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
public class 类适配器 { public static void main(String[] args) { 充电器 phone = new 手机(); System.out.println(phone.高压转低压()); } }
abstract class 高压电 implements 充电器{ public int 插座(){ int output = 220; return output; } } interface 充电器{ int 高压转低压(); } class 手机 extends 高压电{
@Override public int 高压转低压() { int 高压电 = 插座(); int 低压电 = 高压电/44; return 低压电; } }
|
对象适配器
对象适配器拥有源角色的实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public class 对象适配器 { public static void main(String[] args) { 充电器 phone = new 手机对象(new 高压电()); System.out.println(phone.高压转低压()); } }
class 手机对象 extends 高压电 implements 充电器{
private 高压电 伏220高压电;
public 手机对象(高压电 伏220高压电) { this.伏220高压电 = 伏220高压电; }
@Override public int 高压转低压() { int 高压电 = 伏220高压电.插座(); int 低压电 = 高压电/44; return 低压电; } }
|
接口适配器
通过抽象类来实现适配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
public class 接口适配器 { public static void main(String[] args) { 手机输入 phone = new 手机适配器(new 工业插座()); System.out.println("输出后电压"+phone.输入电压()); phone = new 手机适配器(new 家庭插座()); System.out.println("输出后电压"+phone.输入电压()); } }
abstract class 插座{ public int 输出电压(){ return 200; } } class 家庭插座 extends 插座{ @Override public int 输出电压() { return 220; } } class 工业插座 extends 插座{ @Override public int 输出电压() { return 440; } } interface 手机输入{ int 输入电压(); }
class 手机适配器 implements 手机输入{
private 插座 chazuo;
public 手机适配器(家庭插座 jiatingchazuo) { this.chazuo = jiatingchazuo; }
public 手机适配器(工业插座 gongyechazuo) { this.chazuo = gongyechazuo; }
@Override public int 输入电压() { if (chazuo !=null){ System.out.println("输出前电压:"+chazuo.输出电压()); } return 5; } }
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 yanglau0527@gmail.com