读书笔记之工厂方法模式以及简单工厂模式

来源:互联网 发布:淘宝直播c店能开么 编辑:程序博客网 时间:2024/05/23 12:48

工厂方法模式介绍

工厂方法模式是创建型模式之一.在任何需要生成复杂对象的地方,都可以用工厂方法模式.比如一款产品有很多种类,如果每一个种类都用new来创建对象,那么就偏离了六大原则,所以就定义一个工厂类,通过这个类来完成产品的创建,这样当有新的产品需要生产时也只需要修改工厂类的代码.

工厂方法模式的简单实现

1.首先定义产品接口

public interface  Product{    //产品的方法,由子类实现    void method();}

2.定义具体的子类产品

public class ProductA implement Product{    public void method(){        System.out.println("我是产品A");    }}public class ProductB implement Product{    public void method(){        System.out.println("我是产品B");    }}public class ProductC implement Product{    public void method(){        System.out.println("我是产品C");    }}

3.定义工厂接口

public interface  Factory{    //创建产品的方法  <T>Product createProduct(Class<T> clazz);}

4.创建具体的工厂类

public class CreateFactory implement Factory{    public <T extend Product> T createProduct(Class<T> clazz){        Product p =null;        try{            //通过反射动态创建对象,当然这里可以根据clazz判断,然后分别new出对象            p =(Product)Class.froName(class.getName()).newInstance();        }catch(Exception e){            e.printStackTrace();        }        return (T)p;    }}

5.在Client利用工厂类创建具体的对象

public class Client{    public static void main(String[] args){        Factory fcatory = new CreateFactory();        Product p = factory.createProduct(ProductA.class);        p.method();    }}

这样在实际的代码中只需要创建工厂类的对象,然后调用工厂类中创建产品的方法,根据传入的参数就可以创建对应的产品了,这样即使要创建不同的产品也只要修改createProduct的参数即可.尽可能的满足了封闭原则.

简单工厂模式

在上面的工厂方法模式中唯一麻烦点的就是还要定义工厂类的接口,创建工厂类的具体对象才能创建对应的产品.为了更加方便的调用工厂的方法.我们可以将工厂类如下定义:

“`
public class CreateFactory {

public  static  <T extend Product> T createProduct(Class<T> clazz){    Product p =null;    try{        //通过反射动态创建对象,当然这里可以根据clazz判断,然后分别new出对象        p =(Product)Class.froName(class.getName()).newInstance();    }catch(Exception e){        e.printStackTrace();    }    return (T)p;}

}“`

就是去掉了工厂接口的定义,同时将创建产品的方法定义成静态的这样,在实际代码中就可以直接通过类名定义了,但是这种情况一般是适用于工厂类只有一种创建产品的方法,为了方便就这样简写的,这样的模式就是简单工厂模式.

总结

工厂模式虽然简单,但是在我们的android中确用的非常之多,比如Bitmap的创建就是用的工厂方法BitmapFactory来创建的.

阅读全文
0 0
原创粉丝点击