网站大量收购独家精品文档,联系QQ:2885784924

浅谈设计模式之创建型模式.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈设计模式之创建型模式

浅谈设计模式之创建型模式   【摘 要】本文通过对简单工厂模式、工厂模式和抽象工厂模式这三种创建型模式的逐一介绍,较深入地论述它们之间的区别与联系,以及在软件设计中的应用场景,对帮助软件设计人员学习和运用设计模式进行软件开发有一定的实用价值。 【关键词】简单模式;工厂模式;抽象工厂模式 0 引言 针对面向对象程序设计具有复杂性、灵活性的特点,程序开发人员都希望做出能应对各种需求变化的要求,提高代码复用的设计方案。设计模式能很好的帮助他们达到这样的效果。通过复用已经公认的设计模式,开发人员能在解决问题时避免犯前人所犯的错误,少走弯路,可以从中学习他人的经验,提高思考的层次,能从更高的境界,更全面的角度来审视软件分析和设计的过程。工厂模式作为软件开发中常用的设计模式,对提高代码的复用,降低对象之间的耦合度有很好的效果,值得程序开发人员花时间和精力去研究、掌握和运用。 1 简单工厂模式 开发人员在编程的时候,每当“new”一个对象实例之后,这个对象就依赖于这个类了。如果在后期的维护过程中由于某些原因需要修改一下这个类,唯一的做法就是重新打开源代码,进行修改,修改所有与这个对象有关的各种操作,这样有可能对其他已有的代码的安全构成威胁,这对开发来说是非常不利的。从开放-封闭原则来看,希望的是封装变化点,哪里变化,封装哪里。如果要实例化的对象发生了变化,就将实例化这个操作封装起来,开发人员可以把“new”这个操作移交给一个具体的类,由它去负责根据选定的条件创建类的实例,这个负责创建功能的类就是简单工厂。 简单工厂模式,提供一个创建对象实例的功能,而无须关心其具体实现,被创建实例的类型可以是接口,抽象类,也可以是具体的类。简单工厂模式结构图如下所示: 图1 如果要设计一个具有加法、减法、乘法、除法四个基本运算功能的计算器。设计思想可以是先设计一个抽象的运算类(Operation),然后分别从它继承设计出加法类(OperationAdd)、减法类(OperationSub)、乘法类(OperationMul)、除法类(OperationDiv)。在工厂类(Factory)类中通过分支语句来具体创造出运算类的对象。 public class Operation { public double _numberA = 0; public double _numberB = 0; public virtual double GetResult() { double result = 0; return result; } } public class OperationFactory { public static Operation createOperate(string operate) { Operation oper = null; switch (operate) //通过分支语句来动态创建具体的运算类。 { case “+”: oper = new OperationAdd(); break; case “-”: oper = new OperationSub(); break; } return oper; } } 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。就像做一个计算器,有加减乘除等功能,让客户端不用管该用哪个类的实例,只需要把“+”作为参数给工厂,工厂就能根据给定的参数,自动给出相应的实例,客户端只要去做运算就可以了,不同的实例对象会实现不同的运算。如果增加一个“求M数的N次方”的功能,就需要给运算工厂类的方法里加求N次方的分支条件的语句,这样就修改了原有的工厂类,违背了开放-封闭原则。这就需要引入工厂方法来解决这种问题。 2 工厂方法模式 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 针对“求M数的N次方”的功能,根据依赖倒置原则,把工程类抽象出来一个接口,其中只有一个方法就是创建抽象产品的工厂方法,然后所有的要生成具体的工厂,就去实现这个接口。这样,一个简单工厂模式的工厂类,变成了一个工厂接口和实现这个接口的创建类。工厂模式结构图如下所示: 图2 public interface IFactory //工厂接口 { Operation CreateOperation(); } Class FactoryAdd:IFactory//加

文档评论(0)

linsspace + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档