zoukankan      html  css  js  c++  java
  • C#-设计模式-外观模式

    1.定义

    当想访问一堆子接口的时候,为了防止客户端和子接口的耦合,我们将子接口上层重新建立一个外观层,让外观层和客户端发生关系。

    这样就避免了修改子接口的同时,再去修改客户端,因此外观模式有时候又被称作门面模式。

    2.代码实现

    public class UserDAL
    {
        public bool CheckUser(string username, string password)
        {
            return true;
        }
    }
    
    public class LogDAL
    {
        public void AddLog(string info) { }
    }
    
    public class UserService
    {
        UserDAL userDAL = new UserDAL();
        LogDAL logDAL = new LogDAL();
    
        public void CheckUser(string username, string password)
        {
            var result = userDAL.CheckUser(username, password);
            if (result)
            {
                logDAL.AddLog(username + "登录成功");
            }
        }
    }

    本来是两个子接口LogDAL和UserDAL,因为要将接口和客户端隔离,因此产生了UserService类这么门面类

    调用的时候,只需要:

    public class Client
    {
        UserService userService = new UserService();
    
        public void Main()
        {
            userService.CheckUser("admin", "123123");
        }
    }

    这个代码是不是十分熟悉,对的,MVC框架的三层结构,为了避免层与层之间相互污染,就采取的是外观模式的设计手法。

    这样不同层的逻辑只会应该该层的代码,不会对其他层次产生影响,这样就降低了代码的耦合度,后期业务增加和修改的时候,就会更方便。

    3.特点

    优点:分层次的代码设计方式,降低了代码的耦合度,后期功能扩展和功能修改的时候,可以将对其余代码的影响降低;

    缺点:很明显,这样写代码是增加代码的冗余的,对执行效率肯定是有影响的。而且需求更改的时候违背了开闭原则。

  • 相关阅读:
    MCPD 70536题目 自定义打印参数
    《ERP从内部集成起步》读书笔记——第5章 MRP系统的时间概念 5.1 时间三要素 5.1.2 时段
    Jquey拖拽控件Draggable用法
    MCPD 70536题目 反射
    MCPD 70536题目 非托管资源 释放
    VS2008创建Silverlight项目时出错解决方法
    程序猿去旅行
    EntityFramework5.0 数据迁移笔记解决模型变化重建数据库的问题
    完美生活
    一直很安静
  • 原文地址:https://www.cnblogs.com/gamov/p/10535812.html
Copyright © 2011-2022 走看看