工厂方法模式

工厂方法

  • 定义:定义一个用于创建对象的接口,让子类决定实例化哪个类
  • 使用场景:任何需要创建复杂对象的地方,用new就可以完成创建的对象无须使用
  • 自己的理解:产品是同一类东西,需要在不同的地方根据不同的类型返回不同的产品

模型代码

public abstract class Factory{
 /**
抽象工厂方法
@param clz 产品对象类型
@return 具体的产品对象
*/
public abstract <T extends Product> T createProduct(Class<T> clz);
}

public class ConcreteFactory extends Factory {
@Override
     public <T extends Product> T createProduct(Class<T> clz){
         Product p=null;
         try{
             p=(Product)Class.forName(coz.getName()).newInstance();
           }catch(Exception e){
             e.printStackTrace();
            }
     }
return (T)p;
}
//Client中的实现
public class Client {
	 Public  static void main(String[] args){
	 Factory factory=new ConcreteFactory();
	 Product p=factory.createProduct(ConcreteProductB.class);   //需要什么对象 传入什么类型即可
	 p.method();
}
}

android中可以使用工厂模式的地方

  • activity中创建不同的fragment
  • adpter中创建不同的viewholder
  • 好像基本都可以用到