Fork me on GitHub

Programming Design Notes

Design Pattern - Abstract Factory

| Comments

上一篇已經介紹過的 Factory Pattern 可以將建立實例的程式碼抽取出來, 並可以提供絡不同的物件使用。Abstract Factory Pattern 其實和 Factory Pattern 很相似,但 Abstract Factory 比較偏向建立同一系統的物件。

同一系列的意思是彼此的物件有一定的關連,例如: 輪子、引擎、車架、方向盤、儀標板等等。 這些都是組成車子的組件,這些組件亦由可以由不同廠商去開發,Abstract Factory 扮演角色就是廠商。 更改廠商,就可以建立不同樣式的車子。

看看以下例子應該有助你明白這個模式:


Design Pattern - Factory

| Comments

Factory Pattern 可以將創造實例的程式碼分離,令原本核心的程式碼不必太過依賴於某一個物件, 並可以令其他要用到同一物件的地方使用同一套程式碼,方便集中管理。

看看以下例子應該有助你明白這個模式:


Maven Setup Jetty Development Server

| Comments

在 Maven 使用 Jetty 作為 Web Server 是非常簡單,在 pom.xml 加入以下設定:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.26</version>
    <configuration>
        <stopPort>9966</stopPort>
        <stopKey>stop</stopKey>
    </configuration>
</plugin>

以後只需要輸入 mvn jetty:run 就會啟動 Jetty Web Server,輸入 mvn jetty:stop 則關閉, 非常方便。啟動後打開 http://localhost:8080 就可以用了。


Design Pattern - Observer

| Comments

Observer Pattern 有 2 個重要角色「主題」和「觀察者」,觀察者希望主題狀態有變更時會立即被告知。

你可以想像 Blog 上的 Email 訂閱服務(本 Blog 沒有),當你對這個 Blog 有興趣時, 你會用你的 Email 地址去訂閱服務,當有更新時你會立即收到通知,題示你有更新了,請去看看。 當你對 Blog 上千篇一律的內容感到無聊時,你亦可以取消這個訂閱,那以後有更新亦不會再通知你。

看看以下例子應該有助你明白這個模式:


Design Pattern - Strategy

| Comments

近日拿出 Design Pattern 的書重溫,順便和大家分享一下。

Strategy Pattern 主要的目的是將一些有很大機會轉變的行為或演算法封裝起來,並抽出來, 令到在執行期間也可以替換。這樣做的好處是不用變動核心程式碼,而又做到變更行為等等功能。

以下的例子可能令你更明白這個模式的用途。