适配器模式
是什么
将一个类的接口转换成客户希望的另外一个接口
解决接口不兼容问题,复用之前的代码
实例
public class PoliceCarAdapter extends CarController {
private PoliceSound sound;//定义适配者PoliceSound对象
private PoliceLamp lamp;//定义适配者Policelamp对象 //构造函数
public PoliceCarAdapter(){
sound = new PoliceSound();
lamp = new PoliceLamp();
}
//发出警笛声音
@Override
public void phoate() {
sound.alarmSound();
}
//呈现警灯闪烁
public void twinkle()
{
lamp.alarmLamp();
}
}
通过适配器对象内部,包含实际的对象
在测试端调用适配器对象的方法时,会调用内部包含实际对象的方法,实现接口转化
桥接模式
是什么
将抽象部分与它的实现部分分离,使得他们可以独立的变化
将实现分离出来,独立变化
总的来讲,实现这个系统给功能,有不同角度的分类方式,我们将不同角度分离出来让他们肚子变化,减少之间的耦合,而他们之间的关系优先使用组合与聚合关系,而不是继承
实例
也是在Pen类中包含对Color类的引用
public abstract class Pen {
protected Color color; //定义实现类接口对象 //设置颜色
public void setColor(Color color)
{
this.color=color;
}
//绘图
public abstract void paint(); //声明抽象业务方法 }public class Client {
public static void main(String[] args) {
Pen big=new BigPen();
big.setColor(new Red());
big.paint(); Pen middle = new MindlePen();
middle.setColor(new Green());
middle.paint(); Pen little = new LittlePen();
little.setColor(new Blue());
little.paint();
}
}
外观模式
是什么
为了让子系统的一组接口,提供一个一致的界面,定义一个高层接口,这个接口使得子系统更加容易使用
实例
public class Facade {
Memory m;
CPU cpu;
HardDisk hardDisk;
OS os; public Facade(){
m=new Memory();
cpu = new CPU();
hardDisk = new HardDisk();
os = new OS();
} public void run()
{
m.check();
cpu.run();
os.load();
hardDisk.read();
}
}
代理模式
是什么
为其他对象提供一种代理,以控制对这个代理的访问
实例
在代理对象中保存对真实对象的引用,
调用代理对象的方法,转到调用真实对象的方法
总结
适配器模式
总结:
适配器模式的主要作用是将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它主要分为类适配器模式和对象适配器模式,通过引入一个适配器类,将已有接口转换成目标接口,实现接口的兼容和复用。
优点:
- 提高了类的透明性和复用性。
- 增加了系统的灵活性和扩展性。
桥接模式
总结:
桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使它们可以独立变化。通过提供一个桥接接口,将抽象部分与实现部分解耦,降低了系统的耦合度,提高了系统的可扩展性和可维护性。
优点:
- 实现了抽象部分与实现部分的分离。
- 提高了系统的灵活性和可扩展性。
- 降低了系统的复杂度。
外观模式
总结:
外观模式为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。它定义了一个外观角色,负责将客户端的请求转发给子系统中的相应对象,从而简化客户端与子系统的交互。
优点:
- 降低了子系统与客户端的耦合度。
- 提高了系统的易用性和可维护性。
代理模式
总结:
代理模式为某对象提供一种代理以控制对该对象的访问。代理对象作为访问对象和目标对象之间的中介,可以限制、增强或修改目标对象的一些特性。它主要分为静态代理和动态代理两种,通过引入代理对象,实现了对目标对象的封装和访问控制。
优点:
- 实现了对目标对象的访问控制。
- 增强了目标对象的功能。
- 降低了系统的耦合度。
对比
-
目的:
- 适配器模式:解决接口不兼容问题,实现接口的复用和转换。
- 桥接模式:将抽象部分与实现部分分离,实现独立变化。
- 外观模式:简化复杂子系统的访问,提供一致的接口。
- 代理模式:控制对目标对象的访问,实现访问控制和功能增强。
-
结构:
- 适配器模式:包含目标接口、适配者接口和适配器类。
- 桥接模式:包含抽象部分、实现部分和桥接接口。
- 外观模式:包含外观角色和子系统角色。
- 代理模式:包含代理类、委托类和接口。
-
应用场景:
- 适配器模式:适用于接口不兼容但需要一起工作的类。
- 桥接模式:适用于抽象部分和实现部分需要独立变化的场景。
- 外观模式:适用于需要简化复杂子系统访问的场景。
- 代理模式:适用于需要控制对目标对象访问的场景。