安卓设计模式-简单工厂模式
是什么
简单工厂模式又称为静态方法模式(因为工厂类中定义了一个静态方法),简单工厂模式可以理解为负责生产对象的一个类,称为工厂类。
有什么
- 抽象产品类
- 具体产品类(A产品、B产品)
- 具体工厂类
怎么做
- 定义一个抽象产品类
public abstract class Product(){
public abstract void show();
}
- 定义具体产品类继承Product
public class AProduct extends Product{
public void show(){
System.out.print("我是产品A");
}
}
public class BProduct extends Product{
public void show(){
System.out.print("我是产品B");
}
}
- 创建工厂类创建具体的产品
public class Factory{
public static Product create(String productName){
Product p=null;
swich(productName){
case "A"
p=new AProduct();
break;
case "B"
p=new BProduct();
break;
}
return p;
}
}
- 演示
public void test() {
Factory.create("A").show();//生产ProductA
Factory.create("B").show();//生产ProductB
try {
Factory.create("C").show();//生产ProductC
} catch (NullPointerException e) {
System.out.println("没有ProductC");//没有ProductC,会报错
}
}
什么时候用
- 生成复杂对象是确定只有一个工厂类可以使用简单工厂类
优缺点
优点:
(1)代码解耦,创建实例的工作和使用实例的工作分开,使用者不必关系对象如何创建
缺点:
(1)违背开放封闭原则,若需要添加新产品则必须修改工厂类
简单工厂类优化
简单工厂类新增产品时需要直接修改工厂类违反了开发封闭原则,因此可以通过反射来创建实例对像,确保能够遵循开放封闭原则
public class Factory{
public static <T extends Product> create(Class<T> cls){
Product p=null;
p=(Product)Class.forName(cls.getClassName).newInstance();
return (Product)p;
}
}