设计模式之五适配器模式
基本介绍
工作原理
类适配器模式
代码演示
package com.atguigu.adapter.classadapter; //被适配的类 public class Voltage220V { //输出220V的电压 public int output220V() { int src = 220; System.out.println("电压=" + src + "伏"); return src; } } package com.atguigu.adapter.classadapter; //ΚΚΕδ½ΣΏΪ public interface IVoltage5V { public int output5V(); } package com.atguigu.adapter.classadapter; //适配器类 public class VoltageAdapter extends Voltage220V implements IVoltage5V { @Override public int output5V() { // TODO Auto-generated method stub //获取到220V电压 int srcV = output220V(); int dstV = srcV / 44 ; //转成 5v return dstV; } } package com.atguigu.adapter.classadapter; public class Phone { //充电 public void charging(IVoltage5V iVoltage5V) { if(iVoltage5V.output5V() == 5) { System.out.println("电压为5V, 可以充电~~"); } else if (iVoltage5V.output5V() > 5) { System.out.println("电压大于5V, 不能充电~~"); } } } package com.atguigu.adapter.classadapter; public class Client { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" === ÀàÊÊÅäÆ÷ģʽ ===="); Phone phone = new Phone(); phone.charging(new VoltageAdapter()); } }
对象适配器
uml类图
代码演示
package com.atguigu.adapter.objectadapter; //适配器类 public class VoltageAdapter implements IVoltage5V { private Voltage220V voltage220V; // 关联关系-聚合 //通过构造器,传入一个 Voltage220V 实例 public VoltageAdapter(Voltage220V voltage220v) { this.voltage220V = voltage220v; } @Override public int output5V() { int dst = 0; if(null != voltage220V) { int src = voltage220V.output220V();//获取220V 电压 System.out.println("使用对象适配器,进行适配~~"); dst = src / 44; System.out.println("适配完成,输出的电压为=" + dst); } return dst; } } package com.atguigu.adapter.objectadapter; public class Client { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" === ΆΤΟσΚΚΕδΖχΔ£Κ½ ===="); Phone phone = new Phone(); phone.charging(new VoltageAdapter(new Voltage220V())); } }
接口适配器
相关介绍
uml类图
代码演示
package com.atguigu.adapter.interfaceadapter; public interface Interface4 { public void m1(); public void m2(); public void m3(); public void m4(); } package com.atguigu.adapter.interfaceadapter; //在AbsAdapter 我们将 Interface4 的方法进行默认实现 public abstract class AbsAdapter implements Interface4 { //默认实现 public void m1() { } public void m2() { } public void m3() { } public void m4() { } } package com.atguigu.adapter.interfaceadapter; public class Client { public static void main(String[] args) { AbsAdapter absAdapter = new AbsAdapter() { //只需要去覆盖我们 需要使用 接口方法 @Override public void m1() { // TODO Auto-generated method stub System.out.println("使用了m1的方法"); } }; absAdapter.m1(); } }