1 namespace DesignModel.外观模式 2 { 3 class OldSystemBLL 4 { 5 public IList<object> SortData(IList<Object> data) 6 { 7 return data; 8 } 9 } 10 class OldSystemDAL 11 { 12 public IList<Object> GetProductData() 13 { 14 return new List<object>(); 15 } 16 17 } 18 19 /// <summary> 20 /// 外观类:将子系统的功能集成在这里,对外统一使用。 21 /// 迪米特法则(最少知道原则) 22 /// </summary> 23 class Facade { 24 25 OldSystemBLL osll; 26 OldSystemDAL osdal; 27 public Facade() 28 { 29 osll = new OldSystemBLL(); 30 osdal = new OldSystemDAL(); 31 } 32 33 public IList<object> GetSortedProductData() 34 { 35 return osll.SortData(osdal.GetProductData()); 36 } 37 } 38 } 39 40 static void 外观模式() 41 { 42 var f = new Facade(); 43 var list = f.GetSortedProductData(); 44 }
外观模式:为子系统(子业务)定义一个高层类,客户端只需要与这个统一的外观类接口打交道。
比如三层中在DAL和BLL之上建立统一的接口供其它地方使用。复杂的老系统扩展或者修改情况,新增加外观(处理与具体的交互)与开发新功能,便不会影响到其它系统功能。
挺简单的一个设计,相信平常就算不知道这个模式也有用到,关键是要有这种思想,而不是死记。