设计模式——简单工厂模式

最近开始琢磨设计模式,我发现在类设计和代码重构过程中,设计模式的使用是不可或缺的。不仅如此,在阅读他人代码时候,掌握设计模式可以在提高研读效率方面,起到事半功倍的作用——你对代码的分析单位会从语句上升到整个类,这个类扫一眼 ,就能知道是干嘛的了,很让人艳羡的技能!!

我选用的资料是《大话设计模式》这本书,原因很简单——大伙儿都说这书讲的很有依稀,我觉得王小波曾经说过一句话很有道理:有些书,有趣是他应具备的特点。多少人翻 开计算机专业书籍时候一脸无奈,人生已经如此的艰难,一个能写出有意思文章的作者更显得弥足珍贵——就比如说我!《大话设计模式》这本书的源代码是用C#写的,我将其用java语言重新实现,希望能够加深自己的理解,因为读书是个循序渐进的过程,所以设计模式系列文章会随着进度的加深而不断更新。

1.什么是工厂设计模式

言归正传,简单工厂模式是《大话设计模式》在头一章节第一个介绍的设计模式,顾名思义,工厂是用来生产东西的,而且是用来生产指定东西的。在代码中,该模式主要是被用来生成对象。说的再直白,是通过一个工厂类,根据传入参数,生成指定子类对象的一种方法。举个例子,有个叫做富土康的组装工厂,你跟他说,我要一个结实的手机,他会给你生产一个诺基亚,你对他说,我要一个给人温暖的手机,他会给你生产一个小米,如果你对他说,请给我生产一个大众化的手机,他会给你一部苹果。无论苹果,小米还是诺基亚,他们都是手机的子类,根据用户传入参数的不同,工厂类返回不同的子类对象。

2..工厂设计模式的实现:

《大话设计模式》中的例子是这样的:用java实现一个四则混合运算程序,用户输入两个数和一个运算符,程序给出运算结果。如果你是个java初级工程师,你按照如下逻辑实现:

1)输入第一个数;

2)输入第二个数;

3)输入运算符(+-*/)

4)根据运算符对两个数进行求值运算。

以上四个步骤全部写到一个类里面,native,少年,我们用工厂设计模式玩儿点儿花活儿。

首先,无论加、减、乘、除都是一种运算,我们提取该特点进行抽象封装,建立operation父接口,然后在建立加、减、乘、除四个子类。代码如下:

设计模式——简单工厂模式_第1张图片

他的四个子类代码:

设计模式——简单工厂模式_第2张图片

接下来,就是编写我们的工厂类,代码如下:

设计模式——简单工厂模式_第3张图片

这里应该很清楚了,根据传入的云算法,返回相应的加减乘除子类对象。然后在调用子类的getResult方法,就可以获得运算结果了。

主函数代码在这里:

设计模式——简单工厂模式_第4张图片

这么多代码如果你看着费劲的话,下面这张我从《大话设计模式》中截下来的图可以加深你的理解:

设计模式——简单工厂模式_第5张图片

3.为什么要有简单工厂设计模式。

和我们最常用的Object A  = new Objext()构造对象的方法相比,简单工厂设计模式最大的特点就是将对象的生成过程从用户手中隔离开来,在用户在对A对象的生成过程进行更改的时候,我们不必修改项目中所有的Object A  = new Objext()语句,我们只要到工厂类中进行修改就可以了。

你可能感兴趣的:(设计模式)