下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 比较贝氏体转变与珠光体转变和马氏体转变的异同
- 017人教版二年级上册数学全册教案表格式
- 班级安全的工作计划
- 江苏省高考语文模拟试卷汇编:文言文阅读
- 2024年以诚实为题作文3篇(完整)
- 数码相机知识介绍
- 2024年门窗行业购销合同
- 可靠性试题完整版本
- 氨基酸工艺学
- 七年级上册语文教学工作总结4篇
- 山西建投国企招聘笔试题目
- 特种设备锅炉日管控、周排查、月调度主要项目及内容表
- 光伏项目概算计算表
- GB/T 14486-2008塑料模塑件尺寸公差
- 国家开放大学电子政务概论形成性考核册参考答案
- 电力拖动自动控制系统-运动控制系统(第5版)习题答案
- 【课件】3.4我形我秀——作品陈列于展示课件-2021-2022学年高中美术人美版(2019)选修绘画
- 施工总平面布置图
- 吉祥物设计课件.ppt
- 鲁班尺的使用方法
- 前行第59节课(仅供参考).ppt
评论
0/150
提交评论