1.概念:
就是建立一个工厂类,对实现了某一个接口的的一些类进行实例的创建,其实质是根据传入的参数,动态判断应该创建
哪一个产品类的实例。
2,代码举例:
写一个娃娃的接口,有两个产品类,一个是布娃娃,一个是芭比娃娃,由工厂对象决定创建出哪一个类的实例。
娃娃接口:
//娃娃
interface Doll{
public String getInfo();
}
布娃娃 和 芭比娃娃的实现类
//布娃娃
class ClothDoll implements Doll{
public String getInfo(){
return "我是布娃娃,我怕脏。";
}
}
//芭芘娃娃
class BarbieDoll implements Doll{
public String getInfo(){
return "我是芭芘娃娃,我美的不可思议。";
}
}
工厂类:有一个方法 getInstance 根据条件产生不同的对象
注意这里是多态的应用。返回的对象是Doll类型的父类对象,也就是向上转型。
//工厂类
class DollFactory{
//只负责产生对象
public static Doll getInstance(String name){
//根据条件生产不同的对象
if("cloth".equals(name)){
return new ClothDoll();
}else if("barbie".equals(name)){
return new BarbieDoll();
}
return null;
}
}
在主程序里调用一下;
public class FactoryDemo{
public static void main(String[] args){
Doll clothDoll = DollFactory.getInstance("cloth");
if(clothDoll!=null){
System.out.println(clothDoll.getInfo());
}
Doll barbieDoll = DollFactory.getInstance("barbie");
if(barbieDoll!=null){
System.out.println(barbieDoll.getInfo());
}
}
}
结果为:
我是布娃娃,我怕脏
我是芭比娃娃,我很漂亮