天天看點

java哪些地方用到了工廠模式_實際開發中哪些場景需要用到工廠模式?

工廠模式是一個用于執行個體化對象的模式,是用工廠方法代替new操作的一種方式。工廠模式在Java項目中到處都是,因為工廠模式就相當于建立執行個體對象的new,如在我們的系統中經常需要記日志,如果建立logger執行個體時所做的初始化工作可能是很長一段代碼,可能要初始化、指派、查詢資料等等,則會導緻代碼臃腫而難看。

private static Logger logger = LoggerFactory.getLogger(MyBusinessRPC.class);

public static Logger getLogger(String name) {

ILoggerFactory iLoggerFactory = getILoggerFactory();

return iLoggerFactory.getLogger(name);

}

public static ILoggerFactory getILoggerFactory() {

if (INITIALIZATION_STATE == UNINITIALIZED) {

INITIALIZATION_STATE = ONGOING_INITIALIZATION;

performInitialization();

}

switch (INITIALIZATION_STATE) {

case SUCCESSFUL_INITIALIZATION:

return StaticLoggerBinder.getSingleton().getLoggerFactory();

case NOP_FALLBACK_INITIALIZATION:

return NOP_FALLBACK_FACTORY;

case FAILED_INITIALIZATION:

throw new IllegalStateException(UNSUCCESSFUL_INIT_MSG);

case ONGOING_INITIALIZATION:

// support re-entrant behavior.

// See also http://bugzilla.slf4j.org/show_bug.cgi?id=106

return TEMP_FACTORY;

}

throw new IllegalStateException("Unreachable code");

}

在java web項目開發過程中,經常會看到如下配置檔案:

bean的name屬性sqlSessionFactory,我們知道Sqlsession對應着一次資料庫會話。由于資料庫回話不是永久的,是以Sqlsession的生命周期也不應該是永久的,相反,在你每次通路資料庫時都需要建立它(當然并不是說在Sqlsession裡隻能執行一次sql,你可以執行多次,當一旦關閉了Sqlsession就需要重新建立它)。建立Sqlsession的地方隻有一個,那就是SqlsessionFactory的openSession方法,這裡也用到了工廠模式。