专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 设计模式

【设计形式】简单工厂模式

发布时间:2011-06-19 13:22:34 文章来源:www.iduyao.cn 采编人员:星星草
【设计模式】简单工厂模式

一,概念

        从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

二,实例

        请用C++、Java、C#任意一种面向对象语言实现一个计算器控制台程序


三,菜鸟实现




分析:程序实现还算可以,注意到了: 1)除数为0的判断,和异常的检查

                                                                     2)switch的应用,在C/C++中switch之接受 char 和 int 类型。其他的类型只能用if


存在的问题: 1)首先没有按照面向对象的设计方式实现。

                         2)不容易维护

                         3)不容易复用:控制台改成图形界面?只能复制代码,然后更改代码。不能直接调用代码类

                         4)不容易扩展:如果要添加 sqrt( ) 开方?如何实现?

                         5)灵活性不好:操作类和界面类没有分开。

解决办法:通过面向对象的三大技术封装、继承和多态


首先应用封装,让业务逻辑、界面逻辑分开,降低耦合度。

菜鸟进阶一:


试想,如果想增加一个sqrt()。是不是还是要阅读源代码,然后在相应位置添加实现sqrt()的源代码,才可以实现。

如何才能实现松耦合呢?

采用面向对象技术的继承就可以。

菜鸟进阶二



整个程序结构说明:

class Operation                                       //操作运算基类 ,包含运算所必须的操作运算符和操作数,提供设定操作数和返回操作数方法

class OperationAdd :public Operation  //加法运算子类,设定运算结果

class OperationSub :public Operation  //减法运算子类

class OperationMul :public Operation  //乘法运算子类

class OperationDiv :public Operation  //除法运算子类

class OperationFactory                         //运算工厂类 ,负责生成各个操作运算符的类。


【注意】Operation *createOperate(char operate) //返回类型是指针



主要构成结构为: 操作运算符基类:定义操作必须的运算符和操作数,提供设定操作数和返回操作数方法

                                 四种运算子类:继承操作运算符基类,并实现每种运算符下的结果

                                 运算工厂:根据传递参数,生成不同运算符子类返回相应结果

                                 客户端:建立操作符基类,根据工厂生成子类,然后返回结果。





2楼xiaoxiaoluo昨天 10:19
设计模式的资料一般都是java的,博主的参考是那些,可否共享下,看看~~
Re: tianshuai11昨天 20:48
回复xiaoxiaoluon大话设计模式
1楼lidaasky昨天 09:19
有对比,学习了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 关于后台服务器架构有关问题

    关于后台服务器架构问题 最近小弟在优化后台服务器的工作,因为以前的服务器是采用单进程,单线程,并没有涉及到多台服务器的交互问题...

  • 请问个模式的应用

    请教个模式的应用 要做个公司的权限管理,有三个角色 公司管理员,具有权限M1(a),M1(a,b) 部门经理,具有权限M1(a,b),M2() 部门管理...

  • 继承的优缺点解决方法

    继承的优缺点 请问大家如何理解继承,如何使用好继承? ------解决方案-------------------- 关于这个问题,我的确做了一些思考,推荐...

  • 急设计程序删除文件夹中的已损坏pdf文件解决办法

    急!急!急!设计程序删除文件夹中的已损坏pdf文件 文件夹中总共的pdf文件数量有三十几万,怎么才能删除这些pdf文件中已损坏的pdf文件呢? ...

  • 关于Singleton模式继承的有关问题

    关于Singleton模式继承的问题? 定义一个Singleton类,一般都是要被其他实际的类继承,使这个实际的类具有Singleton功能。 现在看到二...

  • 怎么分析需求以决定用什么设计模式

    如何分析需求以决定用什么设计模式? 最近在看设计模式解析,基本上是陷到里面无法自拔了,我的问题是如何分析需求以决定用什么设计模...

  • 设计模式的应用解决方案

    设计模式的应用 我不知道什么时候该用什么样的设计模式 有号得例子或者教学视频吗 ------解决方案-------------------- 这个...

  • visio2002创建UML类图解决思路

    visio2002创建UML类图 使用visio2002画UML类图,文件-新建-选择绘图类型-UML模型图,就会报下面的错误 Runtime Error Program c:\.....

  • 蜂窝模式?该怎么解决

    蜂窝模式? 啥意思啊 ------解决方案-------------------- 是设计模式中的一个 161592169@qq.com 你给我发歌邮件 我回...

  • [HoWo03]是什么书,在google和百度上都找不到,该怎么解决

    [HoWo03]是什么书,在google和百度上都找不到 [HoWo03]是什么书,在google和百度上都找不到 ------解决方案-------------------- H...

热门推荐: