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();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.