外观模式设计系列教程_第1页
外观模式设计系列教程_第2页
外观模式设计系列教程_第3页
外观模式设计系列教程_第4页
外观模式设计系列教程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 页外观模式设计系列教程3.2 外观模式的代码实现/ 子系统中的一个类 /public class SubSystemOne public void MethodeOne() Console.WriteLine(Sub System first method.); / 子系统中一个类 /public class SubSystemTwo public void MethodTwo() Console.WriteLine(Sub System second method.); / 子系统中一个类 /public class SubSystemThree public void MethodTh

2、ree() Console.WriteLine(Sub System third method.); / 子系统中一个类 /public class SubSystemFour public void MethodFour() Console.WriteLine(Sub System fourth method.); / 外观类 /public class Facade private SubSystemOne one; private SubSystemTwo two; private SubSystemThree three; private SubSystemFour four; pub

3、lic Facade() one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); public void MethodA() Console.WriteLine(nMethod group A); one.MethodeOne(); two.MethodTwo(); four.MethodFour(); public void MethodB() Console.WriteLine(nMethod group B); two.Met

4、hodTwo(); three.MethodThree(); 3.3 客户端代码class Program static void Main(string args) / 由于Facade的作用,客户端可以根本不知道子系统类的存在 Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); 运行结果4. 模式总结4.1 优点4.1.1 Facade模式降低了客户端对子系统运用的繁复性。4.1.2 外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更简单扩展和维护。4.1.3 通过合

5、理运用Facade,可以援助我们更好的划分访问的层次。4.2 缺点过多的或者是不太合理的Facade也简单让人迷惑,究竟是调用Facade好呢,还是径直调用模块好。4.3 适用场景4.3.1 需要将设计进行分层时考虑Facade模式。4.3.2 在开发阶段,子系统往往由于重构变得越来越繁复,增加外观模式可以提供一个简约的接口,减削它们之间的依靠。4.3.3 在维护一个遗留的大型系统时,可以这个系统已经特别难以维护和扩展,可以为新系统开发一个Facade类,来提供设计粗糙或高度繁复的遗留代码的比较清楚简约的接口,让新系统与Facade对象交互,Facade与遗留代码交互全部繁复的工作。5. 应用

6、举例:分层开发中,对数据访问层我们增加DataAccess作为对外的接口来操作数据库子系统。5.1 实现类图5.2 实现代码public class Employee public string Name get; set; public int Age get; set; public Salary Salary get; set; public class Salary public DateTime From get; set; public DateTime To get; set; public decimal Amount get; set; public class Employ

7、eeDataAccess public void SaveEmployee(Employee employee) Console.WriteLine(Save employee to database.); public void DeleteEmployee(Employee employee) Console.WriteLine(Remode employee from database.); public class SalaryDataAccess public void SaveSalary(Salary salary) Console.WriteLine(Save salary t

8、o database.); public void DeleteSalary(Salary salary) Console.WriteLine(Remove salary from database.); / DataAccess为客户端提供一个简约的接口 /public class DataAccess private EmployeeDataAccess employeeDataAccess = new EmployeeDataAccess(); private SalaryDataAccess salaryDataAccess = new SalaryDataAccess(); publ

9、ic void SaveEmployee(Employee employee) / 先保存员工基本信息 employeeDataAccess.SaveEmployee(employee); / 保存员工薪水信息 salaryDataAccess.SaveSalary(employee.Salary); public void RemoveEmployee(Employee employee) / 先删除员工薪水信息 salaryDataAccess.DeleteSalary(employee.Salary); / 删除员工基本信息 employeeDataAccess.DeleteEmployee(employee); 5.3 客户端代码class Program static void Main(string args) DataAccess.DataAccess dataAccess = new DataAccess.DataAccess(); DataAccess.Employee employee = new DataAccess.Employee() Salary = new DataAccess.Salary(), Na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论