Android 설계 모드 - 공장 모드

1978 단어

하나.핵심 사상:


대상의 창설 과정을 봉인하면 호출자가 대응하는 방법으로 가져와야 하며 창설 과정에 신경 쓸 필요가 없다.
예: 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();
    }
}

좋은 웹페이지 즐겨찾기