设计模式工厂方法模式FactoryMeth

设计模式工厂方法模式FactoryMeth

ID:38462759

大小:1.51 MB

页数:25页

时间:2019-06-13

设计模式工厂方法模式FactoryMeth_第1页
设计模式工厂方法模式FactoryMeth_第2页
设计模式工厂方法模式FactoryMeth_第3页
设计模式工厂方法模式FactoryMeth_第4页
设计模式工厂方法模式FactoryMeth_第5页
资源描述:

《设计模式工厂方法模式FactoryMeth》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、设计模式(DesignPattern)张凯副教授计算机学院软件工程系问题(Problem)开放封闭原则开放封闭原则(OCP,OpenClosedPrinciple)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。关于开放封闭原则,其核心的思想是:软件实体应该是可扩展,而不可修改的。对扩展是开放的,而对修改是封闭的。问题(Problem)开放封闭原则开放封闭原则主要体现在两个方面:对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修

2、改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。问题(Problem)开放封闭原则“需求总是变化”、“世界上没有一个软件是不变的”,这些言论是对软件需求最经典的表白。从中透射出一个关键的意思就是,对于软件设计者来说,必须在不需要对原有的系统进行修改的情况下,实现灵活的系统扩展。而如何能做到这一点呢?依赖于抽象!问题(Problem)开放封闭原则实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的;而通过面向对象的继承和对多态机制,可以实现

3、对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。这是实施开放封闭原则的基本思路。问题(Problem)用户要求:添加一个新运算问题(Problem)classOperationFactory{publicstaticOperationcreateOperate(stringoperate){Operationoper=null;switch(operate){case"+":{oper=newOperationAdd();break;}case"-":{oper=newOperation

4、Sub();break;}……}returnoper;}}修改类代码,违背了开放封闭原则!主要内容模式动机与定义1模式结构与分析2模式实例与解析3模式效果与应用4工厂方法模式(FactoryMethod)工厂方法模式(FactoryMethod)//工厂方法interfaceIFactory{OperationCreateOperation();}//专门负责生产“*”的工厂classMulFactory:IFactory{publicOperationCreateOperation(){returnnewOperationM

5、ul();}}//专门负责生产“/”的工厂classDivFactory:IFactory{publicOperationCreateOperation(){returnnewOperationDiv();}}//专门负责生产“+”的工厂classAddFactory:IFactory{publicOperationCreateOperation(){returnnewOperationAdd();}}//专门负责生产“-”的工厂classSubFactory:IFactory{publicOperationCreateOpe

6、ration(){returnnewOperationSub();}}工厂方法模式(FactoryMethod)staticvoidMain(string[]args){try{Console.Write("请输入数字A:");stringstrNumberA=Console.ReadLine();Console.Write("请输入数字B:");stringstrNumberB=Console.ReadLine();stringstrResult="";IFactoryoperFactory=newAddFactory();

7、Operationoper=operFactory.CreateOperation();oper.NumberA=Convert.ToDouble(strNumberA);oper.NumberB=Convert.ToDouble(strNumberB);strResult=oper.GetResult().ToString();Console.WriteLine("结果是:"+strResult);Console.ReadLine();}catch(Exceptionex){Console.WriteLine("您的输入有错

8、:"+ex.Message);}}工厂方法模式(FactoryMethod)模式动机模式名称:工厂方法模式(FactoryMethod)模式动机:简单工厂模式如果需要增加新类型,那么需要修改工厂类的代码,这就使得整个设计在一定程度上违反了“开放封闭原则”。我们定义一个抽象的工

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。