概述
目录
定义:
将一个类的接口转换成客户希望的另一个接口。适配器模式让那些
类适配器模式UML图:
对象适配器UML:
实例:
适配器模式是一个结构性模式
定义:
将一个类的接口转换成客户希望的另一个接口。适配器模式让那些
接口不兼容的类可以一起工作
适配器模式:类适配器和对象适配器两种模式
类适配器模式UML图:
public class Adapter extends Adaptee implements Target {
public void request() {
super.specificRequest();
}
}
对象适配器UML:
public class Adapter extends Target {
private Adaptee adaptee; //维持一个对适配者对象的引用
public Adapter(Adaptee adaptee) {
this.adaptee=adaptee;
}
public void request() {
adaptee.specificRequest(); //转发调用
}
}
实例:
某公司欲开发一款儿童玩具汽车,为了更好地吸引小朋友的注意力,该玩具汽车在移动过程中伴随着灯光闪烁和声音提示。在该公司以往的产品中已经实现了控制灯光闪烁(例如警灯闪烁)和声音提示(例如警笛音效)的程序。 为了重用先前的代码并且使得汽车控制软件具有更好的灵活性和扩展性,现使用适配器模式设计该玩具汽车控制软件
public abstract class CarController {
public void move(){
System.out.println("玩具汽车移动");
}
public abstract void phonate();//发出声音
public abstract void twinkle();//灯光闪烁
}
public class PoliceLamp {
public void alarmLamp() {
System.out.println("警灯闪耀");
}
}
public class PoliceSound {
public void alarmSound(){
System.out.println("发出警笛声");
}
}
public class PoliceCarAdapter extends CarController {
private PoliceLamp lamp;
private PoliceSound sound;
public PoliceCarAdapter() {
lamp = new PoliceLamp();
sound = new PoliceSound();
}
//调用适配器者类PoliceLamp
@Override
public void phonate() {
lamp.alarmLamp();
}
//调用适配器者类PoliceSound
@Override
public void twinkle() {
sound.alarmSound();
}
}
public class Client {
public static void main(String[] args) {
CarController car;
car = new PoliceCarAdapter();
car.phonate();
car.twinkle();
car.move();
}
}
最后
以上就是受伤心锁为你收集整理的适配器模式的全部内容,希望文章能够帮你解决适配器模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复