设计模式——适配器模式
2017-11-06 17:38
169 查看
个人理解:
1. 适配器模式属于结构设计模式,有类适配器、对象适配器,示例代码中AndroidPhone为类适配器、IPhone为对象适配器;
2. 示例代码中Power为电源类,有5V,10V,220V,iPhone手机只有10V电压才可开机使用,Android手机只有5V电压才可开机使用,高电压可适配至低电压,低电压无法适配为高电压;
3. 个人理解类适配、对象适配的区别:类适配需要适配的类自己实现适配接口,在类中实现适配方法;对象适配:新建个类专门处理适配,在需要适配的类中声明适配对象变量,通过该变量实现适配方法;对象适配比类适配多了个适配的类
4. 适配在Android中应用非常多,ListView RecycleView、GridView等的各种Adapter,希望自己能专门写篇该分析
示例代码:
Power为电源类:
手机抽象类:
适配接口:
AndroidPhone实现类:
Iphone手机实现类:
Iphone Adapter类实现:
调用方法:
方法执行结果:
11-29 16:29:07.647 824-824/com.wdp.designtest I/startWithAdapter: ----------iPhone传入电压非法,无法适配---------
11-29 16:29:07.647 824-824/com.wdp.designtest I/startWithAdapter: ----------iPhone传入电压为10V,无需适配---------
11-29 16:29:07.647 824-824/com.wdp.designtest I/startWithAdapter: ----------iPhone传入电压为220V,适配为10V,可正常开机---------
11-29 16:29:07.648 824-824/com.wdp.designtest I/startWithAdapter: ----------Android手机传入电压非法,无法适配---------
11-29 16:29:07.648 824-824/com.wdp.designtest I/startWithAdapter: ----------Android手机传入5V电压,无需适配---------
11-29 16:29:07.648 824-824/com.wdp.designtest I/startWithAdapter: ----------Android手机传入220V电压,适配为5V,可正常开机---------
1. 适配器模式属于结构设计模式,有类适配器、对象适配器,示例代码中AndroidPhone为类适配器、IPhone为对象适配器;
2. 示例代码中Power为电源类,有5V,10V,220V,iPhone手机只有10V电压才可开机使用,Android手机只有5V电压才可开机使用,高电压可适配至低电压,低电压无法适配为高电压;
3. 个人理解类适配、对象适配的区别:类适配需要适配的类自己实现适配接口,在类中实现适配方法;对象适配:新建个类专门处理适配,在需要适配的类中声明适配对象变量,通过该变量实现适配方法;对象适配比类适配多了个适配的类
4. 适配在Android中应用非常多,ListView RecycleView、GridView等的各种Adapter,希望自己能专门写篇该分析
示例代码:
Power为电源类:
public class Power { private String power; public Power(String power) { this.power = power; } public String getPower() { return power; } public void setPower(String power) { 4000 this.power = power; } }
手机抽象类:
public abstract class Phone { abstract void start(Power power); }
适配接口:
public interface Adapter { Power powerSwitch(Power power); }
AndroidPhone实现类:
public class AndroidPhone extends Phone implements Adapter { @Override public Power powerSwitch(Power power) { if (power.getPower().equals("5V")){ return new Power("Android手机传入5V电压,无需适配"); } else if (power.getPower().equals("220V")){ return new Power("Android手机传入220V电压,适配为5V,可正常开机"); } else{ return new Power("Android手机传入电压非法,无法适配"); } } @Override public void start(Power power) { if (powerSwitch(power).equals("5V")){ Log.i("startWithAdapter", "----------Android手机接入10V电压,正常开机---------"); }else { Log.i("startWithAdapter", "----------"+powerSwitch(power).getPower()+"---------"); } } }
Iphone手机实现类:
public class Iphone extends Phone { Adapter adaper; public Iphone() { } public Iphone(Adapter adaper) { this.adaper = adaper; } public void setAdaper(Adapter adaper) { this.adaper = adaper; } @Override public void start(Power power) { if (adaper.powerSwitch(power).equals("10V")){ Log.i("startWithAdapter", "----------iPhone手机接入10V电压,正常开机---------"); }else { Log.i("startWithAdapter", "----------"+ adaper.powerSwitch(power).getPower()+"---------"); } } }
Iphone Adapter类实现:
public class IphoneAdapter implements Adapter { @Override public Power powerSwitch(Power power) { if (power.getPower().equals("10V")){ return new Power("iPhone传入电压为10V,无需适配"); } else if (power.getPower().equals("220V")){ return new Power("iPhone传入电压为220V,适配为10V,可正常开机"); } else{ return new Power("iPhone传入电压非法,无法适配"); } } }
调用方法:
private void factoryAdapter(){ /** * 对象适配:iPhone手机电源适配 */ IphoneAdapter iphoneAdapter = new IphoneAdapter(); Iphone iphoneWithAdapter = new Iphone(iphoneAdapter); iphoneWithAdapter.start(new Power("5V")); iphoneWithAdapter.start(new Power("10V")); iphoneWithAdapter.start(new Power("220V")); /** * 类适配:Android手机电源适配 */ AndroidPhone androidPhoneWithAdapter = new AndroidPhone(); androidPhoneWithAdapter.start(new Power("10V")); androidPhoneWithAdapter.start(new Power("5V")); androidPhoneWithAdapter.start(new Power("220V")); }
方法执行结果:
11-29 16:29:07.647 824-824/com.wdp.designtest I/startWithAdapter: ----------iPhone传入电压非法,无法适配---------
11-29 16:29:07.647 824-824/com.wdp.designtest I/startWithAdapter: ----------iPhone传入电压为10V,无需适配---------
11-29 16:29:07.647 824-824/com.wdp.designtest I/startWithAdapter: ----------iPhone传入电压为220V,适配为10V,可正常开机---------
11-29 16:29:07.648 824-824/com.wdp.designtest I/startWithAdapter: ----------Android手机传入电压非法,无法适配---------
11-29 16:29:07.648 824-824/com.wdp.designtest I/startWithAdapter: ----------Android手机传入5V电压,无需适配---------
11-29 16:29:07.648 824-824/com.wdp.designtest I/startWithAdapter: ----------Android手机传入220V电压,适配为5V,可正常开机---------
相关文章推荐
- java23种常用设计模式之适配器模式(Adapter)
- 设计模式六 之 适配器模式(Adapter Pattern)
- 【四】设计模式——适配器模式(Adapter Pattern)
- 设计模式之适配器模式
- 设计模式学习系列8 适配器模式
- C# 设计模式巩固笔记 - 适配器模式
- Java经典23种设计模式之结构型模式(三)------附代理模式、适配器模式、外观模式区别
- JAVA设计模式初探之适配器模式
- 设计模式---适配器模式
- Java设计模式:适配器模式(Adapter Pattern)
- 设计模式------适配器模式
- Android设计模式系列-适配器模式
- Android App 开发 设计模式第二篇:Adapter Pattern适配器模式
- 设计模式之适配器模式
- 设计模式——适配器模式(Adapter patterns)
- 设计模式 -- Adapter 适配器模式
- java设计模式---适配器模式
- [设计模式]适配器模式
- java设计模式之适配器模式
- 设计模式实践(五)适配器模式(adapter)