简单工厂模式的意义在于:定义一个用于创建对象的接口。
简单工厂模式不属于23种GOF中的设计模式。一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。
一、简单工厂模式
简单工厂模式UML图如下:
简单工厂模式由以下部分组成:
工厂类(Factory):简单工厂模式的核心,用来创建对象。
抽象产品类(Product):它一般是具体产品要继承的父类或者要实现的接口。
具体产品角色(ConcreteProduct):工厂类所创建的对象就是此角色的实例。
二、案列分析
我们通过一个简单的例子分析一下简单工厂模式。
游客到动物园参观动物表演。动物管理员会将动物带入场地,不同的动物会有不同的表演。
这里就隐藏着一个简单的静态工厂方法。其中,游客就是客户端(要求动物出来表演),动物管理员就是工厂(创建不同的对象),动物都会表演就是抽象产品;不同的动物就是由工厂创建的具体对象。其UML图如下:
代码部分:
产品类:
// 抽象产品类
abstract class Animal{
abstract void show();
}
//具体产品类
class Monkey extends Animal{
public void show() {
System.out.println("我是一只猴子,我会骑车");
}
}
class Bear extends Animal{
public void show() {
System.out.println("我是一头熊,我会顶球");
}
}
工厂类:
public class AnimalFactory {
public static Animal bringMonkey() {
return new Monkey();
}
public static Animal bringBear() {
return new Bear();
}
}
表演开始:
public class Story{
public static void main(String[] args) {
Animal animal= AnimalFactory.bringMonkey();
animal.show();
animal=AnimalFactory.bringBear();
animal.show();
}
}
输出结果(代码亲测可以通过):
以上就是一个简单工厂模式中的静态方法工厂模式,好处是不必要实例化工厂了类。当动物园要增加一个新的动物进行表演,只要让其实现Animal类,在工厂类中添加新的创建方法即可,但违背了开闭原则。
代码地址:SampleFactory
欢迎大家留言评论,点击查看其它设计模式。