加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

学习简单工厂模式

发布时间:2020-12-16 22:43:13 所属栏目:大数据 来源:网络整理
导读:初识这个词语,并不知道他说的是什么,而将这一章看完之后,才初步了解到什么是简单工厂模式,以及为什么会出现这种模式,下面先看看什么是简单工厂模式吧: ***********************************************************************************简单工厂

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

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

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

简单工厂模式的UML类图


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

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

工厂(Creator)角色

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

抽象产品(Product)角色

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

具体产品(Concrete Product)角色

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

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

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

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

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

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

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读