• java设计模式笔记(1)-适配器模式


    适配器的定义

    适配器就是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等。

    两种模式:

    • 类适配器模式:使用继承的适配器 接口
    • 对象适配器模式:使用委托的适配器 抽象类

    涉及角色:

    • 源角色(Adaptee):需要适配的类
    • 目标角色(Target):想要得到的接口
    • 适配器(Adapter):转换装置

    类适配器模式例子

    源角色

    public class Banner {
    	private String string;
    	
    	public Banner(String string) {
    		this.string = string;
    	}
    	
    	public void showWithParen() {
    		System.out.println("(" + string + ")");
    	}
    	
    	public void showWithAster() {
    		System.out.println("*" + string + "*");
    	}
    }
    

    目标角色

    public interface Print {
    	void printWeak();
    	
    	void printStrong();
    }
    

    适配器

    public class PrintBanner extends Banner implements Print{
    	public PrintBanner(String string) {
    		super(string);
    	}
    	
    	@Override
    	public void printWeak() {
    		showWithParen();
    	}
    
    	@Override
    	public void printStrong() {
    		showWithAster();
    	}
    }
    

    测试类

    public class Main {
    	public static void main(String[] args) {
    		Print p = new PrintBanner("Hello");
    		p.printWeak();
    		p.printStrong();
    	}
    }
    

    打印输出

    (Hello)
    *Hello*
    

    对象适配器模式

    目标角色

    public abstract class Print {
    	public abstract void printWeak();
    	public abstract void printStrong();
    }
    

    适配器

    public class PrintBanner extends Print{
    	private Banner banner;
    	
    	public PrintBanner(String string) {
    		banner = new Banner(string);
    	}
    	
    	
    	@Override
    	public void printWeak() {
    		banner.showWithAster();
    	}
    
    	@Override
    	public void printStrong() {
    		banner.showWithParen();
    	}
    }
    

    适配器的优点

    系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。

    适配器的缺点

    过多的使用适配器,会让系统非常零乱,不易整体进行把握。

    使用场景

    • 旧版本适配新版本,旧版本经过测试已经稳定运行很久。在更新版本时,想要抛弃旧版本,又要兼容旧版本,就可以使用适配器模式来适配旧版本对象
    • 功能不同的类使用适配器进行转换,使得类可以使用。
    • 让现有的类适配新的接口

    参考链接:

    [1]http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html

    [2]结城浩.图解设计模式[M].北京:人民邮电出版社,2017.P14-P22.

  • 相关阅读:
    switch-case的用法
    关于string
    串的顺序存储和链式存储
    【APIO2009T1】采油区域-分类讨论+动态规划
    【APIO2009T1】采油区域-分类讨论+动态规划
    【BashuOJ2963】数字游戏-DFS+剪枝
    【BashuOJ2963】数字游戏-DFS+剪枝
    【POJ3177】Redundant Paths-边双连通分量+缩点
    【POJ3177】Redundant Paths-边双连通分量+缩点
    【POJ2942】Knights of the Round Table-点双连通分量+判断奇环
  • 原文地址:https://www.cnblogs.com/rookie404/p/6291420.html
Copyright © 2020-2023  润新知