设计模式浅谈2——工厂模式之简单工厂模式

工厂模式负责将大量有共同接口的类实例化。工厂模式可以动态决定哪一个类实例化,不必事先知道每次要实例化哪个类。工厂模式有如下几种形态:
1.简单工厂模式(Simple Factory):又称静态工厂方法模式
2.工厂方法模式(Factory Method):又称多态性工厂模式。
3.抽象工厂模式(Abstract Factory):又称工具箱模式。

一、简单工厂模式
设计模式浅谈2——工厂模式之简单工厂模式
简单工厂模式是工厂方法模式的一个特殊实现。
简单工厂模式的实例:
一个农场公司,专门向市场销售各类水果。水果种类如下:
1.苹果
2.草莓
3.葡萄
水果与植物有很大的不同,水果最终可以采摘食用。那么一个自然的做法是建立一个各种水果都适用的接口,以便与农场里的其他植物区分开,如下图所示:
设计模式浅谈2——工厂模式之简单工厂模式
水果类有各种方法。继承水果类的子类如Strawberry,它的源代码如下:
设计模式浅谈2——工厂模式之简单工厂模式
其他的水果实例代码类似。
农场的园丁也是系统一部分,自然需要个合适的类来代表,这个类为FruitGardener,其结构图如下:
设计模式浅谈2——工厂模式之简单工厂模式
FruitGardener类根据客户端要求创建不同类型的水果,如Apple,Strawberry的实例等。如果遇到不合法的输入,则抛出BadFruitException。园丁类的代码如下:
设计模式浅谈2——工厂模式之简单工厂模式
可以看出,园丁类提供了一个静态工厂方法,在客户端的调用下,这个方法创建客户端所需要的水果对象。
简单工厂模式的结构
简单工厂模式是类的创建模式,这个模式一般性结构如下:
设计模式浅谈2——工厂模式之简单工厂模式
从图上可以看出,简单工厂模式设计到工厂角色,抽象产品角色以及具体产品角色等三个角色:
1.工厂类角色(Creator):这是工厂方法模式的核心,含有与应用密切相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体java类实现。
2.抽象产品角色(Product):这是工厂方法模式所创建对象的父类,或它们共同拥有的接口。抽象产品角色可以是一个java接口或者java抽象类实现。
3.具体产品角色(ConcreteProduct):工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体java类实现。

工厂类Creator示意性代码如下:
设计模式浅谈2——工厂模式之简单工厂模式
抽象角色Product的示意性代码如下:
设计模式浅谈2——工厂模式之简单工厂模式
具体产品角色ConcreteProduct示意性代码如下:
设计模式浅谈2——工厂模式之简单工厂模式

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