• Adapter模式的好处


    当调用方使用“管理类”的惯常手法时,要写出类似如下的调用代码:

    IDBMemberNameCardManager ncMgr = MemberFacade.GetInstance().CreateDBMemberNameCardManager();
    IMemberNameCard nc 
    = ncMgr.ReadMemberNameCard(currentMember.Id);
    //将名片中的公司名显示在Label中
    this.LabelCompany.Text = nc.Company;

    这样一来,调用方需要知道
    1、领域信息接口 即上述表示名片信息的接口 IMemberNameCard 以及 currentMember(当前的用户),即“领域(Domain)类”。
    2、存取领域信息的方法接口,即上述 IDBMemberNameCardManager ,亦即所谓“管理(Manager)类”。
    3、取得管理类的门面,即上述的MemberFacade,也即为类厂。

    现在我们改用另外一种模式:
    IMemberNameCardAdapter adapter = (IMemberNameCardAdapter)currentMember.GetAdapter(typeof(IMemberNameCardAdapter));
    if(adatper != null)
    {
        IMemberNameCard nc 
    = adapter.ReadMemberNameCard();
         
    this.LabelCompany.Text = nc.Company;
    }

          使用这种方式的话,调用方需要知道的东西少了“门面”,只需要知道领域信息和存取接口。是不是看起来更加简洁  ?
     这个模式在 Eclipse 中运用得很多,可以在领域类上添加许多不同的适配器,而不需要让领域类直接实现新的接口,从而避免了“接口肿胀”。
    让客户知道得越少越好,我想这就是这个模式的精髓所在了。

    注:这个模式的支持需要某些环境支持,我之前也上传过一个关于适配器模式的C#项目,模拟了这种支持。

  • 相关阅读:
    数据库设计
    企业Logo的发展趋势
    把握面试关键点才是上策
    关注程序员健康之——保护你的腰椎
    常见病的中医药诊治胃痛,呕吐,腹痛,泄泻,分型论治
    孕妈咪 只要恭喜 不要害喜
    职业程序员培养之道
    呕吐、哕、下利病
    脾胃系病证便秘,痢疾,泄泻,腹痛,呃逆。。。。。。。。
    Oracle数据库DBA原文经典书籍
  • 原文地址:https://www.cnblogs.com/xiaotaoliang/p/214235.html
Copyright © 2020-2023  润新知