?? designpattern.htm
字號:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="css/stdlayout.css" type="text/css">
<link rel="stylesheet" href="css/print.css" type="text/css">
<meta content="text/html; charset=gb2312" http-equiv="content-type">
<title>設計模式筆記</title>
</head>
<body>
<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>
<h1>非關語言: 設計模式</h1>
<img style="width: 68px; height: 120px; float: left;" alt="設計模式并不神秘。。。" title="設計模式并不神秘。。。" src="images/actor-1.jpg">程式設計是思維具體化的一種方式,是思考如何解決問題的過程,設計模式是在解
決問題的過程中,一些良好思路的經驗集成,最早講設計模式,人們總會提到 <a href="GoF.htm">Gof
的著作</a>,它最早將經典的 23
種模式集合在一起說明,對后期學習程式設計,尤其是對從事物件導向程式設計的人們起了莫大的影響。<br>
<br>
后來設計模式一詞被廣泛的應用到各種經驗集成,甚至還有反模式(AntiPattern),反模式教導您如何避開一些常犯且似是而非的程式設計思維。<br>
<br>
這邊的話將整理一些設計模式學習心得,實作的部份是使用Java,因而您會看到一些與 Gof
模式不同的圖及實作方式,這是為了善用一些Java本身的特性,至于C++的實作方面,Gof 的書已經給了不少的例子。<br>
<br>
在一些模式的實作上,您會發現我用了介面(interface)來取代抽象類別(Abstract
class),這與原先的Gof書中的范例會不盡相同,這是因為在C++中沒有介面,一個完全沒有實作任何方法的抽象類別,根據當時描述的主題特性,可以
的話會將之換為介面,在語義上會較符合Java語言的特性,但是您要知道的是,介面與完全沒有實作任何方法的抽象類別在某些時候是可以互換的。<br>
<br>
在這邊所看到的 <a href="http://www.uml.org/">UML</a> 圖都是使用
<a href="http://jude.esm.jp/">Jude</a> 繪制的,Jude 是一個純
Java 撰寫的 UML 工具程式,可運行與 Windows、Linux 等多個平臺,體積小,使用簡易。<br>
<br>
<br>
<dl>
<dt>Gof 模式</dt>
</dl>
以下的設計模式則是我個人從 Gof 學習中的個人體會與實作,并增加幾個導入或衍生的簡單模式。<br>
<ul>
<li>Creational 模式</li>
</ul>
<div style="margin-left: 40px;">物件的產生需要消耗系統資源,所以如何有效率的產生、管理
與操作物件,一直都是值得討論的課題, Creational 模式即與物件的建立相關,在這個分類下的模式給出了一些指導原則及設計的方向。<br>
</div>
<ul>
<ul>
<li><a href="SimpleFactory.htm">Simple Factory 模式</a></li>
<li><a href="AbstractFactory.htm">Abstract
Factory 模式</a></li>
<li><a href="BuilderPattern.htm">Builder 模式</a></li>
<li><a href="FactoryMethod.htm">Factory Method 模式</a></li>
<li><a href="PrototypePattern.htm">Prototype 模式</a></li>
<li><a href="SingletonPattern.htm">Singleton 模式</a></li>
<li><a href="RegistryOfSingleton.htm">Registry
of Singleton 模式</a></li>
</ul>
</ul>
<br>
<ul>
<li>Structural 模式</li>
</ul>
<div style="margin-left: 40px;">如何設計物件之間的靜態結構,如何完成物件之間的繼承、實
現與依賴關系,這關乎著系統設計出來是否健壯(robust):像是易懂、易維護、易修改、耦合度低等等議題。Structural
模式正如其名,其分類下的模式給出了在不同場合下所適用的各種物件關系結構。<br>
</div>
<ul>
<ul>
<li><a href="DefaultAdapter.htm">Default Adapter
模式</a></li>
<li><a href="AdapterPattern.htm">Adapter 模式 -
Object Adapter</a></li>
<li><a href="AdapterPattern2.htm">Adapter 模式
- Class
Adapter</a></li>
<li><a href="BridgePattern.htm">Bridge 模式</a></li>
<li><a href="CompositePattern.htm">Composite 模式</a></li>
<li><a href="DecoratorPattern.htm">Decorator 模式</a></li>
<li><a href="FacadePattern.htm">Facade 模式</a></li>
<li><a href="FlyweightPattern.htm">Flyweight 模式</a></li>
<li><a href="ProxyPattern.htm">Proxy 模式(一)</a></li>
<li><a href="ProxyPattern2.htm">Proxy 模式(二)</a></li>
</ul>
</ul>
<br>
<ul>
<li>Behavioral 模式</li>
</ul>
<div style="margin-left: 40px;">物件之間的合作行為構成了程式最終的行為,物件之間若有設
計良好的行為互動,不僅使得程式執行時更有效率,更可以讓物件的職責更為清晰、整個程式的動態結構(像是物件調度)更有彈性。</div>
<ul>
<ul>
<li><a href="ChainofResponsibility.htm">Chain of
Responsibility 模式</a></li>
<li><a href="CommandPattern.htm">Command 模式</a></li>
<li><a href="InterpreterPattern.htm">Interpreter
模式</a></li>
<li><a href="IteratorPattern.htm">Iterator 模式</a></li>
<li><a href="MediatorPattern.htm">Mediator 模式</a></li>
<li><a href="MementoPattern.htm">Memento 模式</a></li>
<li><a href="ObserverPattern.htm">Observer 模式</a></li>
<li><a href="StatePattern.htm">State 模式</a></li>
<li><a href="StrategyPattern.htm">Strategy 模式</a></li>
<li><a href="TemplateMethod.htm">Template Method
模式</a></li>
<li><a href="VisitorPattern.htm">Visitor 模式</a></li>
</ul>
</ul>
<br>
<dl>
<dt>多執行緒模式</dt>
</dl>
在很多應用中都會使用多執行緒,尤其是在Web應用中,多執行緒以 Gof
整理的模式為基礎,考量多執行緒環境中,如何組合這些基本模式來完成多執行緒安全要求。<br>
<ul>
<li><a href="GuardedSuspension.htm">Guarded
Suspension 模式</a></li>
<li><a href="ProducerConsumer.htm">Producer
Consumer 模式</a></li>
<li><a href="WorkerThread.htm">Worker Thread 模式</a></li>
<li><a href="ThreadPerMessage.htm">Thread-Per-Message
模式</a></li>
<li><a href="FuturePattern.htm">Future 模式</a></li>
<li><a href="ReadWriteLock.htm">Read-Write-Lock 模式</a></li>
<li><a href="TwoPhaseTermination.htm">Two-phase
Termination 模式</a></li>
<li><a href="ThreadSpecificStorage.htm">Thread-Specific
Storage 模式</a></li>
</ul>
<br>
<br>
<dl>
<dt>參考資料</dt>
</dl>
以下是以Java實作設計模式的介紹網站,從下面的連結開始,當中您可以找到更多設計模式的資源。<br>
<ul>
<li><a href="http://home.earthlink.net/%7Ehuston2/dp/patterns.html">Huston
Design Pattern</a></li>
<li><a href="http://www.patterndepot.com/put/8/JavaPatterns.htm">The
Design Patterns Java Companion</a></li>
<li><a href="http://www.dotspace.idv.tw/Patterns/Jdon_DesignPatterns.htm">板
橋里人的 Java 設計模式學習心得</a></li>
<li><a href="http://www.uml.org.cn/sjms/sjms.asp">UML
軟件工程組織</a></li>
</ul>
<br>
<br>
<br>
<br>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-143766-1";
urchinTracker();
</script>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -