Android设计模式---工厂模式

一. 核心思想:

把对象的创建过程封装成起来, 调用者需要用哪个对象就调用对应的方法去拿, 不需要关心创建过程。

例如:
A a = Factory.createA();
B a = Factory.createB();

二. 简单工厂、工厂方法、抽象工厂

public interface IOHandler
public class MemoryIOHandler implements IOHandler.
public class PreferencesIOHandler implements IOHandler

1.简单工厂
所有的对象创建都写在一个方法里.
缺点: 随着对象的增加, 判断太多.

package com.liys.modelfactory.simple;

/**
 * 工厂设计模式 - 简单工厂模式
 * Created by liys on 2019/2/12.
 */
public class IOHandlerFactory1 {
    public enum IOType{
        MEMORY,PREFERENCES,DISK
    }
    // 问题,比如我新增一个新的方式存储,要怎么改?需要改动原来的代码
    public static IOHandler createIOHandler(IOType ioType){
        switch (ioType){
            case MEMORY:
                // 直接返回一个对象,有的时候我们需要创建对象之后,要进行一系列的初始化参数
                return new MemoryIOHandler();
            case PREFERENCES:
                return new PreferencesIOHandler();
            default:
                return null;
        }
    }

    /**
     * 反射形式
     * @param clazz
     * @return
     */
    public static IOHandler createIOHandler(Class clazz){
        IOHandler ioHandler = null;
        try {
            ioHandler = (IOHandler)clazz.newInstance();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return ioHandler;
    }
}

2. 工厂方法
一个工厂类创建一个对象
缺点: 类太多

/**
 * 工厂设计模式 - 工厂方法模式
 * 一个工厂类创建一个对象
 * Created by hcDarren on 2017/9/24.
 */
public class IOHandlerFactory2 {

    public static IOHandler createIOHandler(){
        return new PreferencesIOHandler();
    }
}

3. 抽象工厂
一个方法创建一个对象

/**
 * 工厂设计模式 - 抽象工厂
 * 一个方法创建一个对象
 * Created by liys on 2019/01/18.
 */
public class IOHandlerFactory3 {

    public static IOHandler createPreferences(){
        return new PreferencesIOHandler();
    }

    public static IOHandler createMemory(){
        return new MemoryIOHandler();
    }
}

你可能感兴趣的:(Android设计模式---工厂模式)