简单工厂模式:顾名思义就是一个工厂,其它类由该工厂生产出来例如:
public class FruitFactory {
//这是一个工厂类
}
有了工厂就要有产品定义2个水果类
public class Apple{
}
public class Oragle{
}
有了产品了,简单工厂类一般情况下产品会有一个共同的父类
创建一个接口
public interface Fruit{
public void getFruit();
}
产品类继承该接口
public class Apple implement Fruit{
public void getFruit(){
System.out.printf("我是苹果")
}
}
public class Oragle implement Fruit{
public void getFruit(){
System.out.printf("我是橘子")
}
}
工厂就可以生产产品了
第一种<
public class FruitFactory {
//这是一个工厂类
public static Fruit getApple(){
return new Apple();
}
public static Fruit getOragle(){
return new Oragle();
}
}
第二种
public class FruitFactory {
//这是一个工厂类
public static Fruit getFruit(String type){
if(type.equals("apple")){
return Apple.class.newInstance()
}else if(type.equals("oragle")){
return Oragle.class.newInstance();
}else{
System.out.printf("没有这种水果")
return null;
}
}
第三种
public class FruitFactory {
//这是一个工厂类
public static Fruit getFruit(String type){
return(Fruit)Class.forName(type).newInstance();
}
<span style="font-family: Arial, Helvetica, sans-serif;">}</span>
第一中和第二种是最常见的写法,地模式三种通过动态加载获取实例,具有很好的扩展性,但是调用方法是type对应的类的名字要写对,不然会出现ClassNotFoundException,简单工厂模式的确定不易扩展