所谓简单工厂模式,即提供创建对象的接口,而具体创建什么对象,由客户端决定。
比如,我们有IBird这样一个抽象类,有Chicken和Duck这两个类实现IBird。那么,如果我们想灵活的创建Chicken或IBird,那么就需要用到简单工厂模式。
SimpleFactory根据接收到的字符串,决定返回的对象。客户端用父类引用接收子类对象,不需要判别其差别,即可以得到想用的对象。
如下,是这4个类的类图:
首先定义一个IBird抽象类:
public abstract class IBird {
public void describe(){}
}
然后定义Chicken类继承至IBird:
public class Chicken extends IBird{
public void describe() {
System.out.println("I'm a chicken.");
}
}
定义Duck继承至IBird:
public class Duck extends IBird{
public void describe() {
System.out.println("I'm a duck.");
}
}
然后定义一个简单工厂类:
public class SimpleFactory {
public static IBird getBird(String name){
if(name.equals("chicken")){
return new Chicken();
}else if(name.equals("duck")){
return new Duck();
}
return null;
}
}
最后用一个类对简单工厂进行测试:
public class TestSimpleFactory {
public static void main(String[] args){
IBird bird1 = SimpleFactory.getBird("chicken");
bird1.describe();
IBird bird2 = SimpleFactory.getBird("duck");
bird2.describe();
}
}