设计模式——简单工厂模式
设计模式介绍:
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
一、优点:工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。
二、缺点:1由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
2当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不 同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模3块功能的蔓延,对系统的维护和扩展非常不利;
这些缺点在工厂方法模式中得到了一定的克服
三、使用场景:1工厂类负责创建的对象比较少;
2客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;
3由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。
上面的内容是自己摘录的关于简单工厂模式的介绍,希望能够通过它了解一下简单工厂模式。下面我就简答说一下自己在简单工厂模式中遇到的问题。上一篇博客已经谈到了,我们的学习是以《大话设计模式》为重点的,刚开始敲的时候觉得这本书里的菜鸟真是说出了自己的心声,它的提问很有见地,但随着敲打的不断深入证实了一个问题,自己是个小小小菜鸟。呵呵
这一章是从小菜面试受挫后,找到经验丰富的大鸟来请教原因。首先我们应该肯定小菜的这种探索的精神。不怕不识货,就怕货比货。有了比较才能知道优缺点嘛。于是自己将小菜面试中的代码敲了一遍,在敲以前想过如果面试的是我,我是否会回答这个问题呢,答案就不说了吧。小菜的代码敲完之后,知道小菜的代码有问题,如命名不规范、想问题不全面等。这些看似细小的问题却是系统的致命杀手。因此我们自己在敲代码命名的时候一定要规范,逻辑思维要清晰周全。接下来大鸟对面向对象的介绍更是形象易懂。
他用活字印刷技术来讲述面向对象的好处,可维护、可扩展、灵活性好。那我们如何让自己的代码可维护、可扩展、可复用呢?这就提现了面向对象的三大特性:封装、继承、多态。我们做的这个小程序是用c#面向对象语言实现实现一个计算机控制台的程序。先说说封装,将业务逻辑和界面逻辑分开,只有将他们分离开才能实现易维护或扩展。将计算单另出一个类Operation,为它定义一个GetResult的方法。在客户端设置调用这个方法,并显示结果。这个变化看似不大,实际却是封装、分层的体现。
终于到了传说中的简单工厂模式阶段了,在这个模式中又有了细化,将各类运算符设置成了类,继承了operation,就像大鸟所说,在这个基础上再加什么平方根、平方的,不就简单了嘛。
敲完了简单工厂模式,感觉对继承、封装、多态。有了点自己的认识其实这些都是为了实现松耦合,弱化他们之间的关系,让程序可以根据需求扩展,同时也可以让更多的代码实现复用,减轻工作压力,提高经济效益。在这里让我想到了以前师哥说过的一个项目,他们用了37天就完工了,系统那么庞大,这么短的时间完成,想必“复用”功不可没吧。
对简单工厂就说到这吧,下面要进行的是行为型中的策略模式,敬请期待吧。