适配器模式(Adapter)

1  概述
遇到这样的问题:需要用到已有的功能,功能的数据和行为都是正确的,但是功能的调用繁杂并要在多个地方调用。在正常的思维下,我们将功能的调用写在一个公共类的一个方法中,这样我们就已经达到了隔离已有复杂功能目的。但这样做有如下缺点:
1>如果这个类有多个公开的方法,则不能对这个类进行统一的管理;
2>如果这个类中的方法相互依赖很强,那么写公共方法也会比较烦;
最后,我们用OO的语言开发,应该以OO的思想来解决这个问题。上述的问题,通过大师们的总结,已经形成一个统一的解决模式:适配器模式;
2  GOF中的定义
2.1 意图:
  将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——GOF
2.2 对象适配器结构图

2.3 说明:
Adaptee:第三方组件或旧系统中复杂的类;
Target:新系统所希望的接口;
Adapter:将Adaptee转换成Target。

3 示例实现

View Code
    /// <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);
        }
    }

4 总结
总的来说,适配器模式就是在不改变原有代码的前提下,将不兼容或复杂的接口,转换成我们需要的接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值