设计模式之----适配器模式

适配器模式

介绍:
适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。包含以下三个角色:

  • Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于C#语言不支持多重继承,所以它只能是接口。
  • Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。
  • Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

举例:
一个软件团队开发绘图系统,设计了圆对象(Circle)、矩形对象(Rectangle),线对象(Line)都支持Draw()函数,即可以通过Draw()函数绘制图形。为了加快项目进度,将角度对象(Angle)绘制功能交给了合作团队实现。但合作团队将角度对象绘制函数定为了DrawAngle()。绘图系统提供给用户后,用户不满意,希望能统一的调用,不用记太多命令。应用适配器模式,用JAVA控制台应用程序完善该设计。绘制该模式的UML图。
在这里插入图片描述

package adapter;

public interface Draw {
  void draw();
}

package adapter;
//圆形
public class Circle implements Draw{

  @Override
  public void draw() {
  	System.out.println("draw a Circle!");
  }

}

package adapter;
//矩形
public class Rectangle implements Draw{

  @Override
  public void draw() {
  	System.out.println("draw a Rectangle!");
  }

}

package adapter;
//线段
public class Line implements Draw{

  @Override
  public void draw() {
  	System.out.println("draw a Line!");
  }

}



package adapter;
//角度
public class Angle{
	public void drawAngle(){
		System.out.println("draw an Angle!");
	}
}

package adapter;
//角度适配器类
public class AngleAdapter implements Draw {
	private Angle angle;
	
	public AngleAdapter(Angle angle){
		this.angle = angle;
	}
	
	@Override
	public void draw() {
		angle.drawAngle();
	}
}
package adapter;

//测试类
public class Test {
	public static void main(String[] args) {
		Circle circle = new Circle();
		Rectangle rectangle = new Rectangle();
		Line line = new Line();
		Angle angle = new Angle();
		AngleAdapter angleAdapter = new AngleAdapter(angle);

		circle.draw();
		rectangle.draw();
		line.draw();
		angleAdapter.draw();
	}
}

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值