学习简单工厂模式

系统 1622 0

初识这个词语,并不知道他说的是什么,而将这一章看完之后,才初步了解到什么是简单工厂模式,以及为什么会出现这种模式,下面先看看什么是简单工厂模式吧:

***********************************************************************************简单工厂模式***********************************************************************************

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

简单工厂模式的UML类图

学习简单工厂模式

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

该模式中包含的角色及其职责

工厂(Creator)角色

  简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。

抽象产品(Product)角色

  简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

具体产品(Concrete Product)角色

是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

************************************************************************************************************************************************************************************

在对简单工厂模式有了一定的了解之后,下面谈谈在学习这一章的过程中问题及感受:

起初是小菜面试时遇到了一道编程题,要求是“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。”在看了这道题之后,我想了好一会,自我感觉凭我现在的能力,来实现这个程序似乎可以说不可能,这其中涉及到好多的算法,并且我对面向对象还没有彻底的掌握,一个字:难!

在看到小菜编的程序之后,我还是挺佩服的,对于我这个初学C#的“小小菜”起码不可能这么快的编出来。看看小菜编的代码吧,着实发现了好多问题:

1.代码中的变量命名并不规范,没有统一的标准;

2.在判断语句上多次重复,使得计算机做了多次的无用功;

3.除法运算中没有考虑到除数为0时的情况;

4.用户输入的数字、字符没有限制;

5.可扩展性差,代码不能多次复用等。

在大鸟的指导下,小菜不断的更新着代码,将冗余的、无用的代码排除掉,并将业务逻辑和界面逻辑分开,让他们之间的耦合度下降,只有分离开,才可以达到容易维护或扩展。而后,大鸟还指导小菜怎样利用面向对象来设计这个控制台程序,从封装、继承、多态方面逐一介绍,从而由最单一的只能实现功能的一大段冗余代码,进化为将加减乘除类均分开的继承运算类,他们均是继承Operation运算类的各个子类。然而,在利用简单工厂模式之后,只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。这样,将来不管是增加功能,还是修改功能,都不会影响其他的体系。

啧啧,这次又学到了不少的知识,努力中…


学习简单工厂模式


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论