📄 6patterns.html
字号:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Together Tutorial -- Part 6</title>
<link href="tutor.css" rel="styleSheet" type="text/css">
</head>
<body bgcolor="white" link="#003399" alink="#999999" vlink="#000066">
<div align="center">
<p class="head2" align="left"><span style="font-size: 9pt"><a href="mailto:%20e.w@263.net">翻译: 李颖(e.w@263.net)</a></span></p>
</div>
<div align="center">
<p class="head2"><a name="top"></a>Together 教程<br>
6: 模板模式</p>
</div>
<p>模式是代码重用的一种有效工具. Together
支持两种模式:
模板模式和 "模块"
模式.
模板模式对于单个类以及连接和属性很有用处.
模块模式一般用于更复杂的设计模式,
如 GoF 设计模式或 Coad
类模式.
你可以使用模式来创建新的类或成员.
你也可以将模式应用到已存在的类和成员中.</p>
<p>这一课主要集中讨论模板模式.
在最后,
我们将演示如何创建你自己的类模板模式.</p>
<p><b>目录:</b></p>
<ul>
<li><a class="onPage" href="#member">选择类成员模式</a>
<li><a class="onPage" href="#link">将模式应用到连接</a>
<li><a class="onPage" href="#templates">应用类模板模式</a>
<li><a class="onPage" href="#GoF">制作自己的模板模式</a>
<li><a class="onPage" href="#tip">技巧</a>
</ul>
<p></p>
<p><img height="2" width="900" src="images/generic/rainbow2.gif" alt="Divider line"></p>
<p class="head3"><a name="member"></a>选择类成员模式</p>
<p>Together
提供了三种普通的 Java
类成员模式: "Stub Implementations",
"Properties", 以及 "Main method". "Stub Implementations"
模式在一个需要返回值的操作中插入虚构的
"return" 语句. "Properties"
模式创建带 getter 和 setter
操作的特性. "Main method"
模式将一个操作改为
main( ) 方法.</p>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤</b><b>:</b>
将 "Stub Implementation"
模式应用到三个方法:
<ol>
<li><b>Coach.calcPrice()</b>
<li><b>Reservation.ticketPurchased()</b>
<li><b>Flight.numberOfTickets()</b>
</ol>
<p>删除 <b>FirstClass.calcPrice()</b>,
因为它有一个空的方法体,
然后将 <b>calcPrice()</b>
方法从 <b>Coach</b>
复制到 <b>FirstClass</b>. (不要修改 <b>Reservation.calcPrice()</b>.
将这个方法保留到以后实现.)</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#CCCCCC">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
<td valign="top" bgcolor="white">
<p>要应用 "stub"
模式,
首先从操作的右键菜单选择 <b>Choose Pattern</b>. Together
打开一个模式窗口,
其中列出了成员模式和连接模式. </p>
<p>编辑器显示结果代码.</p>
<p><img src="images/airline/pro6_stubimplementioncode.png" width="351" height="136" border="0"></p>
</td>
<td valign="top" bgcolor="white"><img src="images/airline/pro6_memberpattern.png" width="341" height="297" border="0"></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<p></p>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤:</b>
将 "Property"
模式应用到 <b>Reservation.name</b>
和 <b>Agent.name</b>.
给每个属性一个 <b>get</b>
方法, 但不要 <b>set</b>
方法.</td>
</tr>
</table>
</td>
</tr>
</table>
<p>使用特性的右键菜单中来应用
"Properties" 模式.
当你从模式列表中选择
"Properties" 时,
模式窗口的右边允许你修改属性的名称,
类型以及是否有 getter
方法, 是否有 setter 方法,
是否有特性.</p>
<p><img src="images/airline/pro6_patterndialognode.png" width="522" height="421" border="0" alt="Pattern window" hspace="10" vspace="10"></p>
<p>如果你修改了 "Name"
中的文字, Together
将修改特性和方法的名字.
如果你没有选中 "Attribute"
框, Together
将彻底删除特性.</p>
<p>如果你想创建一个新的属性,
而不是使用已存在的特性,
你可以使用类的右键菜单中的
"Member by Pattern" 选项.</p>
<p></p>
<hr>
<p class="head3"><a name="link"></a>将模式应用到连接</p>
<p></p>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#CCCCCC">
<table border="0" cellpadding="5" cellspacing="2">
<tr>
<td valign="top" bgcolor="white">
<p><img src="images/airline/flightreslink.png" width="179" height="259" border="0" alt="Aggregation link" hspace="5"></p>
</td>
<td valign="top" bgcolor="white">
<p>左图是 <b>AirlinePD</b>
类图的一部分,
它显示了从 <b>Flight</b>
到 <b>Reservation</b>
的关联. UML
模型图只表示这个关联是一个聚合.
模型图没有显示任何实际的实现信息.
聚合代码到底是
collection?, array?, vector?, 还是 hash
table 呢?</p>
<p>应该由程序员来选择适当的代码实现.
连接模式提供了一些帮助.</p>
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#993300" width="100%">
<tr>
<td bgcolor="#993300">
<table border="0" cellpadding="0" cellspacing="2" bgcolor="#ffffcc" width="100%">
<tr>
<td bgcolor="#ffffcc"><b>操作步骤:</b>
将 "<nobr><b>Aggregation as ArrayList</b>"</nobr>
模式应用到从 <b>Flight</b>
到 <b>Reservation</b>
的连接.</td>
</tr>
</table>
</td>
</tr>
</table>
<p>有两种方法应用连接模式:</p>
<ol>
<li>对于已存在的连接,
在它的右键菜单中选择 <b>Ch</b><b><nobr>oose Pa</nobr></b><b>ttern</b>
项.
<li>如果连接不存在,
那么可以使用模式来创建连接.
模式连接按纽(<img src="images/icons/associationbypatternicon.png" width="14" height="16" border="0" hspace="2" align="top">)在
Designer 工具条中.
</ol>
<p>对于这两种情况, Together
都会显示 Association Pattern
对话框.</p>
</td>
</tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -