工厂模式

原创 2017年08月10日 00:48:10

工厂模式中大概可分为三种:简单工厂,工厂方法,抽象工厂。
工厂模式的优点是让代码之家的依赖关系变少,降低项目耦合。

简单工厂

简单工厂可以说并不是一种设计模式,只是一种代码风格。
这是我写的一个简单工厂的例子简单工厂demo
这个工厂用来获取物品对象,利用多态实现这一个功能,如果代码中需要很多new操作,这样可以大大节省代码量和依赖关系,也让代码更加清晰。

工厂方法

headfirst中的定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。
其实工厂方法就是定义一个抽象方法,让该抽象类的子类(也就是一个工厂类)去new符合该工厂要求的对象。
这是我工厂方法的demo工厂方法demo
例子中可以看到我声明一个抽象类Store,其getComodity的需要获取的Comodity对象通过抽象方法createComodity创建,具体的创建方式又在其子类中实现。如果store中有通用的方法是可以放到里面的。这样所有得Store的子类可以大大节省代码量。这也实现了对象类型由子类控制,即不同的Store生成不同的对象。

抽象工厂

先来headfirst定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
这是我抽象工厂示例代码抽象工厂demo
其实抽象工厂意如其名,就是工厂是一个抽象类(接口),就像代码中原料的工厂MaterialFactory一样,其实现类会执行具体的new操作。然而抽象工厂被使用的地方一般会作为一个参数传递给被调用者,就像代码中Red类,Red类的构造方法需要一个MaterialFactory,这样Red所需要的类就会根据传进来的不同的factory获取不同的对象,也是利用了多态。

这里工厂方法与抽象工厂是根据我们业务场景不同而区别使用的,但他们都是有一个共同点,针对接口编程,这样会降低代码耦合。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)