### 适配器模式
将一个类的接口转换成用户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(摘抄)
其实适配器模式很简单,就是当你发现你写好了抽象接口和实现类,但是实现的类方法和抽象接口的方法不兼容,这个时候加入一个类实现抽象接口,然后在这个类中实例化实现类,在接口需要调用某种方法时,直接调用实现类里面的方法就可以了,这样解除了不兼容的问题。但是缺点也很明显,如果实现类中的代码不是特别复杂而且这个实现类又和别的没有太大关系时,最好是重新写一个接口的实现类会比较方便和清晰。同时,这也体现了适配器模式的优点,可以增加类的复用,同时在后期维护过程中只需要增加适配器类就可以了。这个是利弊共存的,至于如何取舍这就需要具体情况具体分析了。
~~~
//定义抽象接口
public interface DBTool
{
void query();
void update();
void delete();
void add();
}
//程序里已经有了一个写好的数据库处理类
public class ConcreteDBTool
{
public void q()
{}
public void u()
{}
public void d()
{}
public void a()
{}
}
//已经存在的处理类和接口不兼容,这时就需要一个适配器类
public class DBToolAdapter implements DBTool
{
private ConcreteDBTool concreteDBTool = new ConcreteDBTool();
@Override
public void query() {
// TODO Auto-generated method stub
concreteDBTool.q();
}
@Override
public void update() {
// TODO Auto-generated method stub
concreteDBTool.u();
}
@Override
public void delete() {
// TODO Auto-generated method stub
concreteDBTool.d();
}
@Override
public void add() {
// TODO Auto-generated method stub
concreteDBTool.a();
}
}
//如果客户端现在需要使用已经写好的数据库实现类,那么使用适配器类就可以了
public class Client
{
public static void main()
{
DBTool dbTool = new DBToolAdapter();
//使用的是已经提前写好的实现类里面的方法
dbTool.query();
dbTool.update();
dbTool.delete();
dbTool.add();
}
}
~~~
平时编程的时候有很多类的名字里面都有adapter,估计这些adapter类,就是使用的适配器模式![微笑](https://box.kancloud.cn/2016-01-18_569ca449c5105.gif)
。(纯属个人猜测)
- 前言
- (1)代码无错就是优?——简单工厂模式
- (2)商场促销——策略模式
- (3)&(4)&(5) 设计模式原则
- (6)穿什么有这么重要?——装饰模式
- (7)为别人做嫁衣——代理模式
- (8)雷锋依然在人间——工厂方法模式
- (9)简历复印——原型模式
- (10)考题抄错会做也白搭——模板方法模式
- (11)迪米特法则
- (12)牛市股票还会亏钱?—— 外观模式
- (13)好菜每回味不同——建造者模式
- (14)老板回来,我不知道——观察者模式
- java实现事件委托
- (15)就不能不还DB吗?—— 抽象工厂模式
- (16)无尽加班何时休息——状态模式
- (17)在NBA我需要翻译——适配器模式
- (18)如果再回到从前——备忘录模式
- (19)分公司=部门——组合设计模式
- (20)想走?可以!先买票——迭代器模式
- (21)有些类也需计划生育——单例模式
- (22)手机软件何时统一——桥接模式
- (23)烤羊肉串引来的思考——命令模式
- (24)加薪非要老总批?——职责链模式
- (25)世界需要和平——中介者模式
- (26)项目多也别傻做——享元模式
- (28)男人和女人——访问者模式