设为首页
优惠IDC
收藏本站
六狼博客
六狼论坛
开启辅助访问
切换到窄版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
只需一步,快速开始
快捷导航
门户
首页
BBS
云计算
大数据
手机
移动开发android,ios,windows phone,windows mobile
编程
编程技术java,php,python,delphi,ruby,c,c++
前端
WEB前端htmlcss,javascript,jquery,html5
数据库
数据库开发Access,mysql,oracle,sql server,MongoDB
系统
操作系统windows,linux,unix,os,RedHat,tomcat
架构
项目管理
软件设计,架构设计,面向对象,设计模式,项目管理
企业
服务
运维实战
神马
搜索
搜索
热搜:
php
java
python
ruby
hadoop
sphinx
solr
ios
android
windows
centos
本版
帖子
用户
六狼论坛
»
首页
›
项目管理
›
架构设计
›
适配器模式(Adapter)
返回列表
查看:
115
|
回复:
0
适配器模式(Adapter)
[复制链接]
Mike.Jiang
Mike.Jiang
当前离线
积分
257
窥视卡
雷达卡
升级
19%
当前用户组为
举人
当前积分为
257
, 升到下一级还需要 243 点。
79
主题
79
主题
79
主题
举人
举人, 积分 257, 距离下一级还需 243 积分
举人, 积分 257, 距离下一级还需 243 积分
积分
257
发消息
楼主
|
发表于 2012-12-29 11:12:34
|
显示全部楼层
|
阅读模式
<div id="cnblogs_post_body">
1 概述
遇到这样的问题:需要用到已有的功能,功能的数据和行为都是正确的,但是功能的调用繁杂并要在多个地方调用。在正常的思维下,我们将功能的调用写在一个公共类的一个方法中,这样我们就已经达到了隔离已有复杂功能目的。但这样做有如下缺点:
1>如果这个类有多个公开的方法,则不能对这个类进行统一的管理;
2>如果这个类中的方法相互依赖很强,那么写公共方法也会比较烦;
最后,我们用OO的语言开发,应该以OO的思想来解决这个问题。上述的问题,通过大师们的总结,已经形成一个统一的解决模式:适配器模式;
2 GOF中的定义
2.1 意图:
将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。&mdash;&mdash;GOF
2.2 对象适配器结构图
2.3 说明:
Adaptee:第三方组件或旧系统中复杂的类;
Target:新系统所希望的接口;
Adapter:将Adaptee转换成Target。
3 示例实现
<div class="cnblogs_code" >
View Code <div id="cnblogs_code_open_abc47eaf-351e-4b70-89d9-6c03647a7d21" class="cnblogs_code_hide">
///
<summary>
///
旧系统中的已有的类
///
</summary>
public
class
Adaptee {
public
void
SendMail(
string
mailtitle,
string
mailAddress) { } }
///
<summary>
///
客户代码希望的接口
///
</summary>
public
interface
ISendMail {
void
SendMail(); }
///
<summary>
///
适配器类
///
</summary>
public
class
Adapter:ISendMail {
protected
Adaptee adaptee;
public
Adapter(Adaptee ada) {
this
.adaptee =
ada; }
private
string
tilte;
public
string
Tilte {
get
{
return
tilte; }
set
{ tilte =
value; } }
private
string
address;
public
string
Address {
get
{
return
address; }
set
{ address =
value; } }
public
void
SendMail() { adaptee.SendMail(Tilte, Address); } }
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
linux
C++
Copyright © 2008-2020
六狼论坛
(https://it.6wolf.com) 版权所有 All Rights Reserved.
Powered by
Discuz!
X3.4
京ICP备14020293号-2
本网站内容均收集于互联网,如有问题请联系
QQ:389897944
予以删除
快速回复
返回顶部
返回列表