初识这个词语,并不知道他说的是什么,而将这一章看完之后,才初步了解到什么是简单工厂模式,以及为什么会出现这种模式,下面先看看什么是简单工厂模式吧:
***********************************************************************************简单工厂模式***********************************************************************************
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
简单工厂模式的UML类图
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
该模式中包含的角色及其职责
工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
抽象产品(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色
是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
************************************************************************************************************************************************************************************
在对简单工厂模式有了一定的了解之后,下面谈谈在学习这一章的过程中问题及感受:
起初是小菜面试时遇到了一道编程题,要求是“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。”在看了这道题之后,我想了好一会,自我感觉凭我现在的能力,来实现这个程序似乎可以说不可能,这其中涉及到好多的算法,并且我对面向对象还没有彻底的掌握,一个字:难!
在看到小菜编的程序之后,我还是挺佩服的,对于我这个初学C#的“小小菜”起码不可能这么快的编出来。看看小菜编的代码吧,着实发现了好多问题:
1.代码中的变量命名并不规范,没有统一的标准;
2.在判断语句上多次重复,使得计算机做了多次的无用功;
3.除法运算中没有考虑到除数为0时的情况;
4.用户输入的数字、字符没有限制;
5.可扩展性差,代码不能多次复用等。
在大鸟的指导下,小菜不断的更新着代码,将冗余的、无用的代码排除掉,并将业务逻辑和界面逻辑分开,让他们之间的耦合度下降,只有分离开,才可以达到容易维护或扩展。而后,大鸟还指导小菜怎样利用面向对象来设计这个控制台程序,从封装、继承、多态方面逐一介绍,从而由最单一的只能实现功能的一大段冗余代码,进化为将加减乘除类均分开的继承运算类,他们均是继承Operation运算类的各个子类。然而,在利用简单工厂模式之后,只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。这样,将来不管是增加功能,还是修改功能,都不会影响其他的体系。
啧啧,这次又学到了不少的知识,努力中…