Builder介面重構

2021-08-29 09:04:40 字數 1777 閱讀 8843

meteortl([url]以前的(0.5.1以前)版本中的api介面為:

templatefactory 和 contextfactory 用於建立 template 和 context 兩個核心 domain,

factory 用於合併 templatefactory 和 contextfactory 兩個工廠,

builder 用於建立 factory,

engine 實現 builder,通過builder介面一步步導航到其它介面,

然而一直感覺builder介面很不順眼,

因為它與core包中的其它介面內聚性不高,

它只是作為core包其它介面的使用者,而不是被core包其它介面使用,或繼承於core包其它介面等更強一點的關聯,並且不是核心domain。

有幾個版本試圖將它移到engine包,但發現也並不妥善,

因為整體架構宣告engine包用於實現core包所有介面,

仔細研究builder的實現類engine, 發現其持有乙個不合理的configuration狀態,

public inte***ce builder

public class engine implements builder

public factory buildfactory()

}

使用者呼叫方式:

factory factory = new engine(config).buildfactory();

問題在於config只在一次建造過程有效,engine類持有它毫無意義,重構如下:

public inte***ce builder

public class engine implements builder

}

使用者呼叫方式:

factory factory = new engine().buildfactory(config);

但這樣builder就會依賴於configuration介面,

而按整體架構core包是不能依config包的,

所以只能把builder移到engine包,

發現engine例項的存在也沒起任何作用,再重構為:

factory factory = engine.buildfactory(config);

這樣,builder介面就應該刪除,

在我試著刪掉builder介面後, 猛然發現engine如果直接實現factory會更合理,如:

public class engine implements factory

public template gettemplate(string name, string encoding)

...}

使用者呼叫方式:

factory factory = new engine(config);

總結:當發現放在哪都不合理的類或介面,或許它本身就不應該存在。

C 重構之四(提取介面重構)

提取介面 是一項重構操作,提供了一種使用來自現有類 結構或介面的成員建立新介面的簡單方法。當幾個客戶端使用類 結構或介面中成員的同一子集時,或者當多個類 結構或介面具有通用的成員子集時,在介面中嵌入成員子集將很有用。有關使用介面的更多資訊,請參見 介面 c 程式設計指南 提取介面 在新檔案中生成介面...

Volley介面使用的重構

最近在做手機rom ota專案,專案不算大但原來的 耦合比較高,對後期維護不是很好,設計的好處不用多說增強 復用 更容易擴充套件 更容易讀懂 更容易維護,索性大刀闊斧逐步進行 重構 優化,其中對volley的使用也是問題比較多,所以優先重構了下,後續將逐步對各個不合理的地方重構,後面每個專案都會規劃...

Android專案重構之路 介面篇

在前一篇文章 android專案重構之路 架構篇 中已經簡單說明了專案的架構,將專案分為了四個層級 模型層 介面層 核心層 介面層。其中,最上層的介面,是變化最頻繁的乙個層面,也是最複雜最容易出問題的乙個層面,如果規劃不好,很容易做著做著,又亂成一團了。要規劃好介面層,至少應該遵循幾條基本的原則 保...