﻿<?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>C++博客-逛奔的蜗牛-随笔分类-设计模式</title><link>http://www.cppblog.com/biao/category/20582.html</link><description> 我不聪明，但我会很努力</description><language>zh-cn</language><lastBuildDate>Wed, 03 Jul 2013 22:44:35 GMT</lastBuildDate><pubDate>Wed, 03 Jul 2013 22:44:35 GMT</pubDate><ttl>60</ttl><item><title>JDK里的设计模式</title><link>http://www.cppblog.com/biao/archive/2013/07/04/201504.html</link><dc:creator>逛奔的蜗牛</dc:creator><author>逛奔的蜗牛</author><pubDate>Wed, 03 Jul 2013 20:56:00 GMT</pubDate><guid>http://www.cppblog.com/biao/archive/2013/07/04/201504.html</guid><wfw:comment>http://www.cppblog.com/biao/comments/201504.html</wfw:comment><comments>http://www.cppblog.com/biao/archive/2013/07/04/201504.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/biao/comments/commentRss/201504.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/biao/services/trackbacks/201504.html</trackback:ping><description><![CDATA[<div class="post" id="post-3320" style="margin: 0px 0px 20px; padding-bottom: 5px !important; box-shadow: #cccccc 0px 0px 5px 2px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; line-height: normal; ">
<div class="content" style="margin: 0px; padding: 8px; overflow: hidden; border-left-color: #eeeeee; background-color: white; line-height: 22px; ">
<p style="margin: 0px 0px 10px; padding: 0px; ">下面是JDK中有关23个经典设计模式的示例，在stakeoverflow也有相应的讨论：<br />
<a href="http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns" target="_blank" style="color: #2970a6; text-decoration: none; ">http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns</a></p>
<h4 style="margin: 0px 0px 10px; padding: 0px; letter-spacing: -0.05em; font-family: 'Microsoft YaHei', Arial; font-size: 17px; color: #008800; "><strong><span style="text-decoration: underline; ">Structural（结构模式）</span></strong></h4>
<div style="margin: 0px; "><strong>Adapter:</strong><br />
把一个接口或是类变成另外一种。
<p style="margin: 0px 0px 10px; padding: 0px; "></p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Arrays#asList()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.swing.JTable(TableModel)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.InputStreamReader(InputStream)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.OutputStreamWriter(OutputStream)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.xml.bind.annotation.adapters.XmlAdapter#marshal()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Bridge:</strong><br />
把抽象和实现解藕，于是接口和实现可在完全独立开来。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">AWT (提供了抽象层映射于实际的操作系统)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">JDBC</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Composite:</strong><br />
让使用者把单独的对象和组合对象混用。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.swing.JComponent#add(Component)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.awt.Container#add(Component)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Map#putAll(Map)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.List#addAll(Collection)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Set#addAll(Collection)</li>
</ul>
</div>
<p style="margin: 0px 0px 10px; padding: 0px; "><span id="more-3320"></span></p>
<div style="margin: 0px; ">
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Decorator:</strong><br />
为一个对象动态的加上一系列的动作，而不需要因为这些动作的不同而产生大量的继承类。这个模式在JDK中几乎无处不在，所以，下面的列表只是一些典型的。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.BufferedInputStream(InputStream)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.DataInputStream(InputStream)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.BufferedOutputStream(OutputStream)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.zip.ZipOutputStream(OutputStream)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Facade:</strong><br />
用一个简单的接口包状一组组件，接口，抽象或是子系统。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Class</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.faces.webapp.FacesServlet</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Flyweight:</strong><br />
有效率地存储大量的小的对象。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Integer#valueOf(int)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Boolean#valueOf(boolean)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Byte#valueOf(byte)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Character#valueOf(char)</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Proxy:</strong><br />
用一个简单的对象来代替一个复杂的对象。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.reflect.Proxy</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">RMI</li>
</ul>
</div>
<div style="margin: 0px; ">
<h4 style="margin: 0px 0px 10px; padding: 0px; letter-spacing: -0.05em; font-family: 'Microsoft YaHei', Arial; font-size: 17px; color: #008800; "><strong><span style="text-decoration: underline; ">Creational（创建模式）</span></strong></h4>
</div>
<div style="margin: 0px; "><strong></strong><strong>Abstract factory:</strong><br />
创建一组有关联的对象实例。这个模式在JDK中也是相当的常见，还有很多的framework例如Spring。我们很容易找到这样的实例。
<p style="margin: 0px 0px 10px; padding: 0px; "></p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Calendar#getInstance()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Arrays#asList()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.ResourceBundle#getBundle()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.sql.DriverManager#getConnection()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.sql.Connection#createStatement()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.sql.Statement#executeQuery()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.text.NumberFormat#getInstance()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.xml.transform.TransformerFactory#newInstance()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Builder:</strong><br />
主要用来简化一个复杂的对象的创建。这个模式也可以用来实现一个&nbsp;<a href="http://en.wikipedia.org/wiki/Fluent_interface" target="_blank" style="color: #2970a6; text-decoration: none; ">Fluent Interface</a>。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.StringBuilder#append()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.StringBuffer#append()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.sql.PreparedStatement</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.swing.GroupLayout.Group#addComponent()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Factory:</strong><br />
简单来说，按照需求返回一个类型的实例。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Proxy#newProxyInstance()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Object#toString()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Class#newInstance()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.reflect.Array#newInstance()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.reflect.Constructor#newInstance()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Boolean#valueOf(String)</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Class#forName()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Prototype:</strong><br />
使用自己的实例创建另一个实例。有时候，创建一个实例然后再把已有实例的值拷贝过去，是一个很复杂的动作。所以，使用这个模式可以避免这样的复杂性。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Object#clone()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Cloneable</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Singleton:</strong><br />
只允许一个实例。在 Effective Java中建议使用Emun.</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Runtime#getRuntime()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.awt.Toolkit#getDefaultToolkit()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.awt.Desktop#getDesktop()</li>
</ul>
<h4 style="margin: 0px 0px 10px; padding: 0px; letter-spacing: -0.05em; font-family: 'Microsoft YaHei', Arial; font-size: 17px; color: #008800; "><strong><span style="text-decoration: underline; ">Behavioral(行为模式)</span></strong></h4>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Chain of responsibility:</strong><br />
把一个对象在一个链接传递直到被处理。在这个链上的所有的对象有相同的接口（抽象类）但却有不同的实现。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.logging.Logger#log()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.servlet.Filter#doFilter()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Command:</strong><br />
把一个或一些命令封装到一个对象中。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.Runnable</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.swing.Action</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Interpreter:</strong><br />
一个语法解释器的模式。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Pattern</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.text.Normalizer</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.text.Format</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Iterator:</strong><br />
提供一种一致的方法来顺序遍历一个容器中的所有元素。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Iterator</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Enumeration</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Mediator:</strong><br />
用来减少对象单的直接通讯的依赖关系。使用一个中间类来管理消息的方向。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Timer</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.concurrent.Executor#execute()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.concurrent.ExecutorService#submit()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.lang.reflect.Method#invoke()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Memento:</strong><br />
给一个对象的状态做一个快照。Date类在内部使用了一个long型来做这个快照。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Date</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.Serializable</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Null Object:</strong><br />
这个模式用来解决如果一个Collection中没有元素的情况。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Collections#emptyList()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Collections#emptyMap()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Collections#emptySet()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Observer:</strong><br />
允许一个对象向所有的侦听的对象广播自己的消息或事件。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.EventListener</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.servlet.http.HttpSessionBindingListener</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.servlet.http.HttpSessionAttributeListener</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.faces.event.PhaseListener</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>State:</strong><br />
这个模式允许你可以在运行时很容易地根据自身内部的状态改变对象的行为。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Iterator</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.faces.lifecycle.LifeCycle#execute()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Strategy:</strong><br />
定义一组算法，并把其封装到一个对象中。然后在运行时，可以灵活的使用其中的一个算法。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Comparator#compare()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.servlet.http.HttpServlet</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.servlet.Filter#doFilter()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Template method:</strong><br />
允许子类重载部分父类而不需要完全重写。</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.Collections#sort()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.InputStream#skip()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.io.InputStream#read()</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">java.util.AbstractList#indexOf()</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; "><strong>Visitor:</strong></p>
<p style="margin: 0px 0px 10px; padding: 0px; ">作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.</p>
<ul style="margin: 0px; padding: 0px 0px 10px; ">
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor</li>
    <li style="margin: 0px; padding: 0px 0px 0px 20px; list-style-position: inside; ">javax.lang.model.type.TypeMirror 和javax.lang.model.type.TypeVisitor</li>
</ul>
<p style="margin: 0px 0px 10px; padding: 0px; ">（全文完）</p>
</div>
<div style="margin: 15px 0px 0px; font-size: 11px; color: #cc0000; ">
<p align="center" style="margin: 0px 0px 10px; padding: 0px; "><strong>（转载本站文章请注明作者和出处&nbsp;<a href="http://coolshell.cn/" style="color: #2970a6; text-decoration: none; ">酷壳 &#8211; CoolShell.cn</a>&nbsp;，请勿用于任何商业用途）</strong></p>
</div>
<div style="margin: 0px 0px 50px; text-align: center; "><span style="background-color: #e3e4e6; font-family: 'Microsoft YaHei', Verdana, 'BitStream vera Sans', Arial, Helvetica, sans-serif; font-size: 12px; letter-spacing: 0em; line-height: normal; ">相关文章</span></div>
</div>
</div>
<div id="related_posts" style="margin: 10px 0px 0px; padding-bottom: 10px; box-shadow: #cccccc 0px 0px 5px 2px; color: #555555; font-family: Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; line-height: normal; ">
<div class="wp_rp_wrap  wp_rp_plain" id="wp_rp_first" style="margin: 0px; ">
<div class="wp_rp_content" style="margin: 0px; ">
<ul class="related_post wp_rp" style="margin: 0px; padding: 3px 12px 8px; background-image: url(http://coolshell.cn/wp-content/themes/inove/img/box.gif); background-color: #f4f5f7; visibility: visible; background-position: 100% 100%; background-repeat: no-repeat no-repeat; ">
    <li data-position="0" data-poid="in-6950" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2012年03月26日 --&nbsp;<a href="http://coolshell.cn/articles/6950.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">需求变化与IoC</a></li>
    <li data-position="1" data-poid="in-7236" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2012年05月03日 --&nbsp;<a href="http://coolshell.cn/articles/7236.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">用Unix的设计思想来应对多变的需求</a></li>
    <li data-position="2" data-poid="in-7992" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2012年08月06日 --&nbsp;<a href="http://coolshell.cn/articles/7992.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">C++的坑真的多吗？</a></li>
    <li data-position="3" data-poid="in-8088" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2012年08月16日 --&nbsp;<a href="http://coolshell.cn/articles/8088.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">对技术的态度</a></li>
    <li data-position="4" data-poid="in-1954" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2009年12月15日 --&nbsp;<a href="http://coolshell.cn/articles/1954.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">Java读写Excel</a></li>
    <li data-position="5" data-poid="in-2483" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2010年06月02日 --&nbsp;<a href="http://coolshell.cn/articles/2483.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">四个流行的Java连接池</a></li>
    <li data-position="6" data-poid="in-4844" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2011年06月16日 --&nbsp;<a href="http://coolshell.cn/articles/4844.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">&#8220;另类&#8221; 设计模式</a></li>
    <li data-position="7" data-poid="in-8961" data-post-type="none" style="margin: 0px; padding: 3px 5px; list-style: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #e3e4e6; line-height: 18px; ">2013年02月01日 --&nbsp;<a href="http://coolshell.cn/articles/8961.html" class="wp_rp_title" style="color: #2970a6; text-decoration: none; ">从面向对象的设计模式看软件设计</a></li>
</ul>
</div>
</div>
</div>
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.cppblog.com/biao/aggbug/201504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/biao/" target="_blank">逛奔的蜗牛</a> 2013-07-04 04:56 <a href="http://www.cppblog.com/biao/archive/2013/07/04/201504.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计模式文章收集</title><link>http://www.cppblog.com/biao/archive/2013/06/30/201403.html</link><dc:creator>逛奔的蜗牛</dc:creator><author>逛奔的蜗牛</author><pubDate>Sun, 30 Jun 2013 04:35:00 GMT</pubDate><guid>http://www.cppblog.com/biao/archive/2013/06/30/201403.html</guid><wfw:comment>http://www.cppblog.com/biao/comments/201403.html</wfw:comment><comments>http://www.cppblog.com/biao/archive/2013/06/30/201403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/biao/comments/commentRss/201403.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/biao/services/trackbacks/201403.html</trackback:ping><description><![CDATA[@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);&nbsp;
<div><br />
</div>
<div>1. 命令模式
<div>&nbsp; &nbsp; (屌丝程序员版): 小左啊，这要加xxx功能:&nbsp;<a href="http://blog.csdn.net/zuoxiaolong8810/article/details/9153511">http://blog.csdn.net/zuoxiaolong8810/article/details/9153511</a>
<div><br />
</div>
<font color="#333333">2. Build模式</font></div>
</div>
<div><font color="#333333">&nbsp; &nbsp; (民工版): 要造房子，找几个民工(Builder)，一个设计师(Director)，开始吧:&nbsp;<a href="http://www.iteye.com/topic/71175">http://www.iteye.com/topic/71175</a></font></div>
<div>
<div><font color="#333333"><br />
</font></div>
</div><img src ="http://www.cppblog.com/biao/aggbug/201403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/biao/" target="_blank">逛奔的蜗牛</a> 2013-06-30 12:35 <a href="http://www.cppblog.com/biao/archive/2013/06/30/201403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>