?? compositepattern.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>Composite 模式</title>
</head>
<body>
<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>
<h1><a href="CppGossip.html">Design Pattern: Composite 模式</a></h1>
如果以繪圖為例的話,一個文字是一個繪圖元件,一個線段是一個繪圖元件,而一個長方形也是一個繪圖元件,這些繪圖元件可以組成一個圖片,如果將這個圖片也
視作一個繪圖元件,則這么遞回繪圖下去,就可以組合成一個較大的、復雜的圖形元件,這樣的目的可以使用Composite模式來解決。<br>
<br>
對于使用者而言,無論是文字、線段或長方形,甚至是組合后的圖片元件,它們都擁有一個共同的行為,使用者基本上并不會感覺出它們之間的操作有任何的不同,您可以拖曳、放大、縮小等等,這些行為都是一致的。<br>
<br>
以 UML 來表示上面這個例子的結構: <br>
<div style="text-align: center;"><img style="width: 486px; height: 400px;" alt="Composite" title="Composite" src="images/composite-1.jpg"><br>
</div>
<br>
對于Text、Line與Rectangle而言,Picture是一個容器,然而Picture繼承Graphic類,所以它也是一個繪圖元件,您可以進一步的將Picture組合至另一個Picture中,以形成較大的、復雜的圖形。<br>
<br>
組合模式的UML結構圖如下所示: <br>
<div style="text-align: center;"><img style="width: 396px; height: 378px;" alt="Composite" title="Composite" src="images/composite-2.jpg"><br>
<br>
</div>
依此架構,您可以遞回的組合圖形元件,例如:<br>
<div style="text-align: center;"><img style="width: 305px; height: 167px;" alt="Composite" title="Composite" src="images/composite-3.jpg"><br>
</div>
<br>
除了繪圖元件之外,一些具有層次性或組合性的物件也可以使用Composite模式,像是電路元件、設備元件等等,使用Composite模式可以大大減低這些元件設計的復雜度。<br>
<br>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -