﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-luolin-随笔分类-设计模式</title><link>http://www.blogjava.net/luolin/category/20858.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 18 Aug 2009 15:07:04 GMT</lastBuildDate><pubDate>Tue, 18 Aug 2009 15:07:04 GMT</pubDate><ttl>60</ttl><item><title>读书笔记（重构_改善既有代码设计_第八章重新组织数据）</title><link>http://www.blogjava.net/luolin/archive/2009/08/18/291213.html</link><dc:creator>在从未放弃的路上</dc:creator><author>在从未放弃的路上</author><pubDate>Tue, 18 Aug 2009 13:02:00 GMT</pubDate><guid>http://www.blogjava.net/luolin/archive/2009/08/18/291213.html</guid><wfw:comment>http://www.blogjava.net/luolin/comments/291213.html</wfw:comment><comments>http://www.blogjava.net/luolin/archive/2009/08/18/291213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luolin/comments/commentRss/291213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luolin/services/trackbacks/291213.html</trackback:ping><description><![CDATA[<p>1.Self Encapsulate Field</p>
<p>为这个field建立getting/setting method,并且只通过这些函数来访问field.<br />
例：<br />
privte int low,high;<br />
boolean includes(int arg){<br />
&nbsp;&nbsp;&nbsp;&nbsp;return arg&gt;=low&amp;&amp;arg&lt;=high;<br />
}<br />
重构为：<br />
private int low,high;<br />
boolean includes(int arg){<br />
&nbsp;&nbsp;&nbsp;&nbsp;return arg&gt;=getLow()&amp;&amp;arg&lt;=getHigh();<br />
}<br />
int getLow(){return low;}<br />
int getHigh(){return high;}</p>
2.Replace Data Value with Object<br />
将一个数据项变成一个对象。<br />
3.Change Value to Reference<br />
将这个实值对象变成一个引用对象。<br />
4.Change Reference to Value<br />
将一个引用对象变成实值对象。<br />
例：<br />
Class Currency{<br />
private String code;<br />
public String getCode()}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return code;<br />
}<br />
private Currency(String code){<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.code=code;<br />
}<br />
}<br />
5.Replace Array with Object<br />
以对象替换数组，对于数组中的每个元素，以一个值域表示之。<br />
例：<br />
String[] row=new String[3];<br />
row[0]="Liverpool";<br />
row[1]="15";<br />
重构为：<br />
Performance row=new Performance();<br />
row.setName("Liverpool");<br />
row.setWins("15");<br />
6.Duplicate Observed Data<br />
7.Change Unidirectional Association to Bidirectional<br />
8.Change Bidirectional Association to Unidirectional<br />
 <img src ="http://www.blogjava.net/luolin/aggbug/291213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luolin/" target="_blank">在从未放弃的路上</a> 2009-08-18 21:02 <a href="http://www.blogjava.net/luolin/archive/2009/08/18/291213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计模式（抽象工厂）</title><link>http://www.blogjava.net/luolin/archive/2009/08/18/291573.html</link><dc:creator>在从未放弃的路上</dc:creator><author>在从未放弃的路上</author><pubDate>Tue, 18 Aug 2009 13:01:00 GMT</pubDate><guid>http://www.blogjava.net/luolin/archive/2009/08/18/291573.html</guid><wfw:comment>http://www.blogjava.net/luolin/comments/291573.html</wfw:comment><comments>http://www.blogjava.net/luolin/archive/2009/08/18/291573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luolin/comments/commentRss/291573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luolin/services/trackbacks/291573.html</trackback:ping><description><![CDATA[Abstract Factory<br />
通过工厂类创建某一对象，而不是直接使用new关键字。<br />
public class Computer(){<br />
}<br />
public class NoteBookComputer extends Computer(){<br />
}<br />
public abstract class ComputerFactory(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;public abstract Computer createComputer();<br />
}<br />
public class NoteBookComputerFactory extends ComputerFactory{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Computer createComputer() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new NoteBookComputer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
client code:<br />
ComputerFactory factory=new NoteBookComputerFactory();<br />
Computer noteBook=factory.createComputer();<br />
<img src ="http://www.blogjava.net/luolin/aggbug/291573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luolin/" target="_blank">在从未放弃的路上</a> 2009-08-18 21:01 <a href="http://www.blogjava.net/luolin/archive/2009/08/18/291573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>