简单工厂模式、抽象工厂模式

关于设计模式之前就很想学习,但是发现自己功底不够深厚,学习起来有一定的难度,最近准备拿出来重新系统的学习一下。。。关于设计模式自我感觉网上大多讲的繁文缛节,还不如直接看代码来的实在。其次在学习的过程中我觉得设计模式就是一种思想。用的多了自然就得心应手了。前期也不用考虑那么多,比如优缺点啊什么的,只需要知道核心思想是什么,主要用在哪些场景下面即可。下面说说我的理解吧:

简单工厂模式:

从表面上理解就是一种工厂,那么工厂是干什么的?加工零部件吧。。比如我们这就是一个车胎的工厂,可以满足各种车胎的生产。ok..接下来,不同的汽车厂商需要什么类型的车胎交给工厂去做就好,而不用管车胎工厂是怎么做的。这就是工厂模式。是不是感觉很简单吧。下面展示一个案例:或许看完就能豁然开朗吧!

步骤 1

创建一个接口:

Shape.java

步骤 2

创建实现接口的实体类。

Rectangle.java

Square.java

Circle.java

步骤 3

创建一个工厂,生成基于给定信息的实体类的对象。

ShapeFactory.java


步骤 4

使用该工厂,通过传递类型信息来获取实体类的对象。

FactoryPatternDemo.java

步骤 5

执行程序,输出结果:

抽象工厂

那什么是抽象工厂模式,说白了就是我这个生产车胎的工厂,不仅要生产车胎,我还要生产车轮,好了,这样一弄,简单工厂不能满足组我们的要求了.玛尼,不能用那就不用了。人们又想出了另一种解决方案。那我一个工厂建造两个生产设备吧。我一个用来生产车胎,一个用来生产车轮,不就好了。对应设计模式里面的创建了两个接口~

案例:

步骤 1

为形状创建一个接口。

Shape.java

步骤 2

创建实现接口的实体类。

Rectangle.java

Square.java

Circle.java

步骤 3

为颜色创建一个接口。

Color.java

步骤4

创建实现接口的实体类。

Red.java

Green.java

Blue.java

步骤 5

为 Color 和 Shape 对象创建抽象类来获取工厂。

AbstractFactory.java

步骤 6

创建扩展了 AbstractFactory 的工厂类,基于给定的信息生成实体类的对象。

ShapeFactory.java

ColorFactory.java

步骤 7

创建一个工厂创造器/生成器类,通过传递形状或颜色信息来获取工厂。

FactoryProducer.java

步骤 8

使用 FactoryProducer 来获取 AbstractFactory,通过传递类型信息来获取实体类的对象。

AbstractFactoryPatternDemo.java

步骤 9

执行程序,输出结果: