我工作的那点事--学习《设计模式》实例应用(Adapter模式)

本文通过生动的例子介绍了软件设计中的适配器模式,利用“挂羊头卖狗肉”的比喻来帮助理解。并通过具体的Java代码示例展示了如何实现适配器模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一想到这个模式,我就想到一个谚语“挂羊头卖狗肉”,哈哈,虽然比较难听,感觉还是比较准确的表达这个意思的。
Adapter模式:Adaptee(被适配者),Adaptor(适配器)和Adapter(组装前两者).

当需要将两者结合,但是又不能改变这两者时,要用到这种模式。

还是用刚才的那个谚语作解释吧,比较形象点:

羊头:Adaptee
狗肉:Adaptor
卖者:Adapter

呵呵,下面的例子相关信息和这个谚语没有必然的联系。

其实很多时候,原来的信息在传播过程中被适配了,当你得到信息时,还以为是原来的信息。


下面还是用工作上的一些事情做实例解析下吧:

有些公司老总在国外,一些事情是由这边的manager代理的(好像是proxy模式,呵呵),有时候我们得到的信息都是他传达过来的,
他的一些处理方式,我们会都认为是老总的处理方式。


1.Adaptee:CEO

pubilc class CEO{
public String sendMessage(String message){
return "CEO:"+message;
}
}


2.Adaptor: Manager

pubilc class Manager{
public String sendMessage(String message){
return "Manager:"+message;
}
}


3.Adapter:Adapter 这里就进行改变了

pubilc class Adapter extends CEO {

private Manager manager;

public void setManager(Manager manager){
this.manager = manager ;
}

public String sendMessage(String message){
return manager.sendMessage(message);//好像是CEO的指令 其实已经变成了manager的指令了。
}
}


4.调用如下过程:

Manager manager = new Manager();
Adapter adaper = new Adapter();
adaper.setManager(manager);
adaper.sendMessage("message from ceo");


原理基本上解析清楚了,下面描述一下另外一种方法。

1.Adaptee:CEO

pubilc interface ICEO{
public String sendMessage(String message);
}

public class CEO implements ICEO{

public String sendMessage(String message){
return "CEO:"+message;
}
}


2.Adaptor: Manager

pubilc interface IManager{
public String sendMessage(String message);
}

pubilc class Manager implements IManager{
public String sendMessage(String message){
return "Manager:"+message;
}
}


3.Adapter:Adapter

pubilc class Adapter implements CEO,Manager {

private Manager manager;
private CEO ceo;

public void setManager(Manager manager){
this.manager = manager ;
}

public void setCEO(CEO ceo){
this.ceo = ceo ;
}

public String sendMessage(String message){
return manager.sendMessage(message);
}
}
《软件秘笈:设计模式》郑阿奇(编者) -电子工业出版社 在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。 1 设计模式概述 1.1 计算机软件的发展现状 1.2 引入设计模式的必要性 1.3 软件设计遵循的基本原则 1.3.1 高内聚、低耦合 1.3.2 面向抽象编程 1.3.3 多用组合少用继承 1.3.4 “开-闭”原则 1.4 设计模式概述 1.4.1 什么是设计模式 1.4.2 为什么需要设计模式 1.4.3 如何正确应用设计模式 1.5 设计模式的分类 1.5.1 创建型模式 1.5.2 结构型模式 1.5.3 行为型模式 1.6 学会归纳总结 第一部分 创建型模式 2 曹操献刀:工厂方法模式 2.1 三国故之曹操献刀 2.2 模式定义 2.3 故中的模式分析 2.3.1 故中的角色 2.3.2 抽象化分析方法 2.3.3 工厂方法模式的静态建模 2.4 故的工厂方法模式实现 2.4.1 建立产品 2.4.2 建立工厂 2.4.3 故情节的历史重现 2.4.4 用八星宝刀来考验模式 2.5 设计原则 2.6 使用场合 2.7 本章要 3 肯德基:抽象工厂模式 3.1 发生在肯德基的故 3.2 模式定义 3.3 故中的模式分析 3.3.1 故中的角色 3.3.2 抽象化分析 3.3.3 抽象工厂模式的静态建模 3.4 故的抽象工厂模式实现 3.4.1 抽象食物的建立 3.4.2 建立不同食物的抽象基类 3.4.3 创建具体的食物 3.4.4 建立工厂 3.4.5 创建客户类 3.4.6 故情节的展现 3.5 设计原则 3.6 使用场合 3.7 本章要
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值