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.特点

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

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

猜你喜欢

转载自www.cnblogs.com/gamov/p/10535812.html