目录
前言
设计模式(Design pattern)代表了最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的解决方案。通常根据设计模式所解决的问题性质的不同,将其划分为三大类:创建型、结构型、行为型。
具体包括:
创建型:简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式。
结构型:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
其中结构型主要关注如何将类或对象按某种布局组成更大的结构,解决多个相关联的对象之间组织结构的普适性问题。
一、 适配器模式
定义
改变类的接口形式,使得原本不兼容系统的类通过适配器模式向外延展一个接口,让系统内的其他类可以通过该接口和外部类进行交互合作。如常用笔记本使用的电压为25V左右,而家用电源电压为220V,因此笔记本需要向外延展一个用于将220V电压转为25V电压的适配器接口。
应用场景
在大规模系统开发中,如果有一些还未开发完的模块需要一些开发组件,而这些组件在市面上就已经存在了,但是如果直接拿来用则由于兼容问题无法使用。如果为了这些组件而去更改系统内的代码或架构,显然得不偿失。因为以后如果将这些组件重新再开发又要反过来去修改系统内的代码,不符合开闭原则。因此引入适配器模式,将这些外部组件和系统内部中间放一个适配器,保证组件和系统内部类能够正常交互,而如果有新的组件替换原有组件,则只要修改适配器就够了,不需要对系统内部代码或架构进行修改。
实现
- 通过继承方式实现
public class AdapterType {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.adapterUse();
}
}
/**
* 外部组件
*/
class Origin{
public void use(){
System.out.println("使用220V电源");
}
}
/**
* 通过继承实现适配器
*/
class Adapter extends Origin{
public void adapterUse(){
System.out.println("使用适配器");
super.use();
}
}
- 通过委让方式实现
public class AdapterType {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.adapterUse();
Origin origin = new Origin();
Adapter2 adapter2 = new Adapter2(origin);
adapter2.adapterUse();
}
}
/**
* 外部组件
*/
class Origin{
public void use(){
System.out.println("使用220V电源");
}
}
/**
* 通过委让实现适配器
*/
class Adapter2{
Origin origin;
public Adapter2(Origin origin){
this.origin = origin;
}
public void adapterUse(){
System.out.println("使用适配器");
origin.use();
}
}