惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
量子位
V
Visual Studio Blog
F
Full Disclosure
博客园 - 叶小钗
Recent Announcements
Recent Announcements
G
Google Developers Blog
博客园 - Franky
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
B
Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
Netflix TechBlog - Medium
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Cloudbric
Cloudbric
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Martin Fowler
Martin Fowler
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
S
Secure Thoughts
P
Privacy International News Feed
I
InfoQ
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - 洪虎

Windows环境下安装Python 建立批命令快速修改本机IP地址 网络经典命令 - 洪虎 - 博客园 “指定域的名称或安全标识SID与该域的信任信息不一致”的解决方法 建立主DNS区域和辅助DNS区域的最佳实践 无人职守安装 XP 电脑黑客基本技术和入侵的关键字以及电脑攻防应用 建立一个可修改Windows域用户密码的web页面 修复SQL2000中损坏的表 将Excel转换为CSV的VBA代码 - 洪虎 - 博客园 用命令检查电脑是否被安装木马 DateTime.ToString 方法 - 洪虎 - 博客园 在C#中自定义异常 - 洪虎 - 博客园 使用DataDynamics.ActiveReports 创建子报表 错误的SQL脚本,错误消息 4104 - 洪虎 - 博客园 如何在 Reporting Services 开发基于用户权限的报表呢? 委托模式 接口模型 使用反射检查程序集,实现自动更新
适配器模式
洪虎 · 2006-10-18 · via 博客园 - 洪虎

    适配器模式我理解他就是为了协调已有代码和不断变化的需求的一个折中的选择。

    例如:

    假设我们以前开发过一个项目,他提供一个类Vehicle,用来表示所有交通工具,能够提供该物体的运动状态和改变状态的方法,例如启动、制动、加速、减速、转向、前进、后退等功能。但是这个类提供方法计算距离的单位是公制,也就是按照米来计算的。

    但是后来有另外一个项目,也需要上述的功能,只不过要求按照英制来计算距离。而且这个英国客户已经定义了一个接口,其中各方法不但方法名称不同,而且计算距离的制式是采取英制的。

    遇到这种情况,一方面可以修改已有代码,再建立一套适合英制的版本。但这不是最好的办法,会导增加后期版本维护的问题。

    为了达到既能满足新项目接口规范的要求,又对已有项目的影响最小。我们可以采取适配器模式定义另外一个类,这个类需要继承自我们已有的类Vehicle,然后实现客户定义的接口。然后在实现代码中对各种距离参数进行制式转换后,传递给基类Vehicle去按照公制处理。这样我们只需要向这个英国客户公布新定义的类,例如是Vehicle2。他就可以通过这个类来访问你以前的代码。因为这个类实现了客户定义的接口,所以对客户的代码是兼容的。而且这种方式下客户的开发工作可以不受我们开发进度的影响,只要他们的代码是规范的使用这个接口,就不存在问题。

    所以我总结适配器模式,有利于代码重用,能够让不同小组同步开发。当然前提是事先要规划好接口,如果接口都一变再变,那么可能会导致很多意想不到的问题出现。

洪虎

2006-10-18