简单工厂模式(Simple Factory)又叫静态工厂方法模式。它定义了一个具体的工厂类来负责创建一些类的实例,而这些被创建的类都应该有一个共同的父类。
下面是一个利用简单工厂模式创建Tiger,Dolphin,Parrot的例子,这些具体的动物类都实现了抽象的动物接口。
//****Animal.java
package com.designpattern;
public interface Animal {
public void eat();
}
//****Tiger.java
package com.designpattern;
public class Tiger implements Animal {
public void run() {
System.out.println("Tiger is running!");
}
public void eat() {
System.out.println("Tiger is eating!");
}
}
//****Dolphin.java
package com.designpattern;
public class Dolphin implements Animal {
public void swim() {
System.out.println("Dolphin is swimming!");
}
public void eat() {
System.out.println("Dolphin is eating!");
}
}
//****Parrot.java
package com.designpattern;
public class Parrot implements Animal {
public void fly() {
System.out.println("Parrot is flying!");
}
public void eat() {
System.out.println("Parrot is eating!");
}
}
//****SimpleFactory.java
package com.designpattern;
public class SimpleFactory {
/*in terms of parameter to create different objects*/
public static Animal createAnimal(String animalName){
if("Tiger".equals(animalName))
return new Tiger();
else if("Dolphin".equals(animalName))
return new Dolphin();
else if("Parrot".equals(animalName))
return new Parrot();
}
}
//****Client.java
package com.designpattern;
public class Client {
public static void main(String[] args){
Animal animal = SimpleFactory.createAnimal("Tiger");
animal.eat();
Animal animal = SimpleFactory.createAnimal("Dolphin");
animal.eat();
Animal animal = SimpleFactory.createAnimal("Parrot");
animal.eat();
}
}
//****输出****
Tiger is eating!
Dolphin is eating!
Parrot is eating!
总结:
简单工厂模式中,客户端不再负责对象的创建,具体的工厂类用来创建对象,客户端只负责对对象的调用。