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.特点
优点:分层次的代码设计方式,降低了代码的耦合度,后期功能扩展和功能修改的时候,可以将对其余代码的影响降低;
缺点:很明显,这样写代码是增加代码的冗余的,对执行效率肯定是有影响的。而且需求更改的时候违背了开闭原则。