門(mén)面模式參考資料大話(huà)設(shè)計(jì)模式 設(shè)計(jì)模式之禪 github我見(jiàn)過(guò)最好的設(shè)計(jì)模式 定義也稱(chēng)為外觀(guān)模式 外觀(guān)模式是一種結(jié)構(gòu)型設(shè)計(jì)模式, 能為程序庫(kù)、 框架或其他復(fù)雜類(lèi)提供一個(gè)簡(jiǎn)單的接口。
例子App訂單接口
適用場(chǎng)景
生活中的例子
通用寫(xiě)法
物流系統(tǒng)案例
門(mén)面業(yè)務(wù)幫我們聚合扣款,監(jiān)測(cè),發(fā)貨的功能,客戶(hù)端只需要找門(mén)面就行了 源碼中的案例Spring的JdbcUtilspublic static boolean supportsBatchUpdates(Connection con) {
try {
DatabaseMetaData dbmd = con.getMetaData();
if (dbmd != null) {
if (dbmd.supportsBatchUpdates()) {
logger.debug("JDBC driver supports batch updates");
return true;
}
else {
logger.debug("JDBC driver does not support batch updates");
}
}
}
catch (SQLException ex) {
logger.debug("JDBC driver 'supportsBatchUpdates' method threw exception", ex);
}
return false;
}幫我們包裝了對(duì)連接的操作,這樣客戶(hù)端只需要使用JdbcUtils就行了 Mybatis的Configurationpublic MetaObject newMetaObject(Object object) {
return MetaObject.forObject(object, objectFactory, objectWrapperFactory, reflectorFactory);
}
public ParameterHandler newParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql) {
ParameterHandler parameterHandler = mappedStatement.getLang().createParameterHandler(mappedStatement, parameterObject, boundSql);
parameterHandler = (ParameterHandler) interceptorChain.pluginAll(parameterHandler);
return parameterHandler;
}
public ResultSetHandler newResultSetHandler(Executor executor, MappedStatement mappedStatement, RowBounds rowBounds, ParameterHandler parameterHandler,
ResultHandler resultHandler, BoundSql boundSql) {
ResultSetHandler resultSetHandler = new DefaultResultSetHandler(executor, mappedStatement, parameterHandler, resultHandler, boundSql, rowBounds);
resultSetHandler = (ResultSetHandler) interceptorChain.pluginAll(resultSetHandler);
return resultSetHandler;
}
public StatementHandler newStatementHandler(Executor executor, MappedStatement mappedStatement, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
StatementHandler statementHandler = new RoutingStatementHandler(executor, mappedStatement, parameterObject, rowBounds, resultHandler, boundSql);
statementHandler = (StatementHandler) interceptorChain.pluginAll(statementHandler);
return statementHandler;
}幫我們創(chuàng)建對(duì)應(yīng)的對(duì)象 和其他設(shè)計(jì)模式的區(qū)別門(mén)面模式和代理的區(qū)別
門(mén)面模式和單例模式的區(qū)別經(jīng)常把門(mén)面模式做成單例模式, 優(yōu)缺點(diǎn)優(yōu)點(diǎn)
缺點(diǎn)
問(wèn)題門(mén)面模式
|
|
|
來(lái)自: 路人甲Java > 《待分類(lèi)》