设计模式之适配器模式

    1.设计模式的分类(按用途分类)

    1)创建型模式。主要用于描述如何创建对象,如建造者模式

    2)结构性模式。主要用于描述如何实现类和对象的组合。如今天要讲的适配器模式

        也可以这样理解:描述了如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更强大的结构。

    3)行为型模式。主要用于描述类或对象怎样交互以及怎样分配职责。如策略模式

    2.切入正题,开始适配器模式的学习

    1)来源于生活的例子

          大家见过自己的笔记本充电器,充电器都有一个长方形的的“方块”,称为电源适配器,电压就是通过这个玩意变成笔记本的额定电压给笔记本充电的,在这里,引入适配器模式的四大角色。

          适配器模式包含四个角色:目标抽象类定义客户要用的特定领域的接口(电脑的额定电压);适配器类可以调用另一个接口,作为一个转换器(“电源适配器”),对适配者和抽象目标类进行适配,它是适配器模式的核心;适配者类是被适配  的角色,它定义了一个已经存在的接口,这个接口需要适配(家庭电压过高,被适配为电器的额定电压);在客户类中针对目标抽象类进行编程,调用在目标抽象类中定义的业务方法。

           生活着还有很多的这样的例子,都用到了这个思想,比如冰箱用的变压器,电脑上使用的usb转接头等等。

    2)类图

    


类适配器类图


对象适配器类图

3)分析类图

    1)找不同。类适配器喜欢让类适配器继承需要适配的适配者类,而对象适配器喜欢让适配器类加上一个适配器的成员变量。

    2)不同的设计效果有什么异同呢?这可能是大家最想问的问题,也是我今天写这篇博文的一个出发点。同:都是为了将一个接口转换为客户希望的另一个接口,使接口不兼容的类可以一起工作。

    3)放大招,大家有没有想过两种方法各自的好处在哪?类适配器模式使用的是继承,所以方便通过重写适配者的方法来动态改变适配者的功能。缺点:java只能单继承。所以只能继承一个适配者类。

    而对象适配器模式可以组合很多的适配者,一个适配器类中可以使用很多不同的适配者方法。缺点:若适配者的方法需要重写,方法里的业务逻辑需要修改的时候,就有点麻烦了,在不违反开闭原则的情况下解决方法是写一个适配者的子类,让重写方法后的子类对象通过适配器的构造方法传入适配器。

public class DogAdapter implements Robot{
	private Dog dog;
	
	public DogAdapter() {
		this.dog = new Dog();
	}
	
	/**
	 * 若有修改适配者方法的需求,可以将dog的子类通过构造方法传递给成员变量
	 * @param onedog
	 */
	public DogAdapter(Dog onedog) {
		this.dog = onedog;
	}
	
	
	@Override
	public void cry() {
		System.out.println("机器人模仿:");
		dog.wang();
	}

	@Override
	public void move() {
		System.out.println("机器人模仿:");
		dog.run();
	}

}
4)如果喜欢,希望为我点个赞,给我力量以创作更好的文章。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值