工厂方法模式的定义为:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法模式让类吧实例化推迟到了子类
工厂方法模式分为三类:
1.普通工厂
首先创建实现类的接口:
public interface Show{
public void whoIAm();
}
创建两个具体的实现类
class A implements Show{
@Override
public void whoIAm(){
System.out.println("我是A类");
}
}
class B implements Show{
@Override
public void whoIAm(){
System.out.println("我是B类");
}
}
创建普通工厂
public class Factory{
public Show getClass(String name){
if(name.equals("A")){
return new A();
}
if(name.equals("B")){
return new B();
}
return null;
}
}
普通工厂的最大缺点就是当传入的参数匹配不到时就无法创建实例,多个工厂方法模式用提供多个工厂方法的方式来提供实例创建。
2.多个工厂方法模式
public class Factory{
public Show getAClass(){
return new A();
}
public Show getBClass(){
return new B();
}
}
3.静态工厂方法模式
静态工厂方法模式与多个工厂方法模式的区别就是将提供实例的方法变成静态提供,使我们不需要实例化工厂,直接可以获得实例。
public class Factory{
public static Show getAClass(){
return new A();
}
public static Show getBClass(){
return new B();
}
}