2 简单工厂设计模式
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类(或者父接口)。
简单工厂模式的 UML 图:
抽象产品(Product)角色:简单工厂模式所创建的是所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
代码示例:
代码:
抽象产品角色:宠物
/** * 抽象产品角色(Product) * 负责描述所有实例的公共接口 */ public interface Pet { public void eat(); }
具体产品角色:
猫
public class Cat implements Pet { protected Cat() { } @Override public void eat() { System.out.println("猫咪正在吃东西..."); } }
狗
public class Dog implements Pet { protected Dog() { } @Override public void eat() { System.out.println("狗狗正在吃东西"); } }
工厂角色:
public class PetFactory { public static Pet createPet(String name){ if("cat".equals(name)){ return new Cat(); }else if("dog".equals(name)){ return new Dog(); }else{ return null; } } }
测试类:
public class Client {
public static void main(String[] args) {
Pet cat = PetFactory.createPet("cat");
cat.eat();
Dog dog = PetFactory.createPet("dog");
dog.eat();
}