设计模式-适配器模式

本文通过实例介绍了适配器模式的原理及应用。适配器模式允许不兼容接口的类协同工作,通过创建适配器类,使得原有类的功能得以复用。文中详细解释了适配器(Adapter)、目标类和被适配者(Adaptee)的角色。
摘要由CSDN通过智能技术生成
设计模式-适配器模式
适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,能够使得原本由于接口不兼容而不能一起工作的那些类可以协同工作了。
本实例介绍如何使用适配器模式以及使用的规则。
实现适配器模式的技术要点如下:
1.目标类是Adapter的父类,Adapter需要继承目标类,以具备目标类提供的功能。
2.Adapter是适配器模式中的适配者,它本身并不实现任何功能,但是能提供功能,即它能将其他类的功能据为己有。
3.Adaptee是适配器模式中的被适配者,Adapter需要实现Adaptee的接口,以提供Adaptee提供的功能。
在Adapter的构造方法中,传入一个具体的Adaptee对象,在实现Adaptee接口定义的方法中,调用Adapter对象的相应方法。
(注意Adapter和Adaptee的区分,教材中写错了,都写成了Adapter,大家注意留意,现在在该条记录的叙述中已经修改)


源代码

package Pattern;


interface Shape{ //定义形状接口
	public void setPosition(int position); //设置位置
	public int getPosition(); //获得位置
	public void move();  //移动位置
	public void display();// 展示形状
}
class Oblong implements Shape{  //定义个矩形形状 ,实现接口Shape
	int position;
	public void setPosition(int position){//设置位置
		this.position=position;
	} 
	public int getPosition(){//获得位置
		return this.position;
	}
	public void move(){ //移动位置
		System.out.println("矩形图形已经移动到:"+3*position);
	} 
	public void display(){// 展示形状
		System.out.println("矩形图形的位置:"+position);
	}
}
class Circular{ //定义一个圆形形状,没有实现Shape接口
	int position;
	public void setPosition(int position){//设置位置
		this.position=position;
	} 
	public int getPosition(){//获得位置
		return this.position;
	}
	public void display(){// 展示形状
		System.out.println("圆形图形的位置:"+position);
	}
	
}
class CircularAdapter implements Shape {
	private Circular circular;  //创建私有圆形对象
	public CircularAdapter(){   //new 对象
		circular = new Circular();
	}
	public void setPosition(int position){//设置位置
		circular.setPosition(position);
	}
	public int getPosition(){//获得位置
		return circular.getPosition();
	}
	public void move(){ //移动位置
		System.out.println("圆形图形已经移动到:"+3*getPosition());
	}
	public void display(){// 展示形状
		circular.display();
	}
}


public class TextAdapter {
	public static void main(String[] args) {
		Oblong oblong=new Oblong(); //实例化对象
		oblong.setPosition(100); //设置位置
		oblong.display();//显示位置
		oblong.move();//移动位置
		CircularAdapter circular=new CircularAdapter();//实例化适配器
		circular.setPosition(100); //设置位置
		circular.display();//显示位置
		circular.move();//移动位置
	}
}


运行结果


源代码解读
1.程序中定义一个接口Shape、一个接口的实现类Oblong、普通类Circular以及普通类的适配器类CircularAdapter。
2.普通类Circular看作是目标类,CircularAdapter是Adapter,Shape是Adaptee角色。
将CircularAdapter和目标Circular进行适配,CircularAdapter将具有Shape定义的所有功能。
定义CircularAdapter类来实现Circular中没有实现的方法,而不是重新写一个Circular类。
3.Adapter模式实际上是将组合方法和继承方法综合运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值