﻿<?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>博客园-  黄牛</title><link>http://www.cnblogs.com/huangchangnan/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 20 Aug 2008 09:41:23 GMT</lastBuildDate><pubDate>Wed, 20 Aug 2008 09:41:23 GMT</pubDate><ttl>60</ttl><item><title>Singleton Pattern &amp; Prototype Pattern 学习笔记（代码）</title><link>http://www.cnblogs.com/huangchangnan/archive/2008/04/28/1174473.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Mon, 28 Apr 2008 05:14:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/archive/2008/04/28/1174473.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1174473.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/archive/2008/04/28/1174473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1174473.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1174473.html</trackback:ping><description><![CDATA[摘要: ClientCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceCSharp.DesignPattern.Proto&nbsp;&nbsp;<a href='http://www.cnblogs.com/huangchangnan/archive/2008/04/28/1174473.html'>阅读全文</a><img src ="http://www.cnblogs.com/huangchangnan/aggbug/1174473.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41802/" target="_blank">[新闻]微软Office 14即将展开Alpha测试</a>]]></description></item><item><title>设计模式--------依赖倒置原则（DIP）（转载）</title><link>http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170157.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 24 Apr 2008 16:35:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170157.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1170157.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1170157.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1170157.html</trackback:ping><description><![CDATA[<p><font face="Verdana">依赖倒置原则DIP(Dependency-Inversion Principles)</font></p>
<p><font face="Verdana">在传统的结构化编程中，最上层的模块通常都要依赖下面的子模块来实现，也称为高层依赖低层！</font></p>
<p><font face="Verdana">DIP原则就是要逆转这种依赖关系，让高层模块不要依赖低层模块.</font></p>
<p><font face="Verdana">教科书上的定义：<br />
第1点：高层模块不依赖底层模块，两者都依赖抽象<br />
第2点：抽象不应该依赖于细节，细节应该依赖于抽象</font></p>
<p><font face="Verdana">每个较高层次都为它所需要的服务声明一个抽象接口,较低的层次实现这些抽象接口,每个高层类都通过该抽象接口使用下一层的服务,接口属于高层,低层要实现高层的接口,因此现在是低层依赖于高层.<br />
是依赖关系倒置和接口所有权的倒置. </font></p>
<p><font face="Verdana">启发式规则:<br />
1.任何变量都不应该持有一个指向具体类的指针或者引用.<br />
2.任何类都不应该从具体类派生(始于抽象,来自具体)<br />
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法.</font></p>
<p><font face="Verdana">这个原则对于那些虽然具体但是却稳定的类来说似乎并不是很合适， 如果一个类不太会改变， 而且也不太可能创建其他的派生类，那么依赖它似乎并没有太大的危害。比如java的String类。<br />
<br />
（原文地址忘了，不好意思）<br />
对上面的【1.任何... 2.任何... 3.任何...】 不是非常赞同。光看到词语就觉得有点极端化的感觉。<br />
纯粹是菜鸟的个人感觉^^<br />
</font></p>
<img src ="http://www.cnblogs.com/huangchangnan/aggbug/1170157.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41801/" target="_blank">[新闻]《星际争霸2》新图</a>]]></description></item><item><title>C# 浅拷贝和深拷贝 学习笔记</title><link>http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170137.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 24 Apr 2008 16:05:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170137.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1170137.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170137.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1170137.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1170137.html</trackback:ping><description><![CDATA[摘要:  C#中有两种类型变量，一种是值类型变量，一种是引用类型变量。对于前者，copy是属于全盘复制；而对于后者，一般的copy只是浅copy，相当于只传递一个引用指针一样。因此对于后者进行真正copy的时候，也是最费事的，具体的说，必须为其实现ICloneable接口中提供的Clone方法。 浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用. 深拷贝(深度克隆):不紧复制对象的基本&nbsp;&nbsp;<a href='http://www.cnblogs.com/huangchangnan/archive/2008/04/25/1170137.html'>阅读全文</a><img src ="http://www.cnblogs.com/huangchangnan/aggbug/1170137.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41801/" target="_blank">[新闻]《星际争霸2》新图</a>]]></description></item><item><title>[导入]C# 对象深拷贝、浅铐贝、直接拷贝 </title><link>http://www.cnblogs.com/huangchangnan/archive/2008/04/24/1170120.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 24 Apr 2008 15:53:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/archive/2008/04/24/1170120.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1170120.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/archive/2008/04/24/1170120.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1170120.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1170120.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这种技术是我在学习设计模式的过程中遇到的，GoF设计模式中有几个讲到到了这个对象拷贝。So 我的在网站的找了一些有关这方面的资料，帮助大家更好的学习设计模式。&nbsp;&nbsp;<a href='http://www.cnblogs.com/chjw8016/archive/2008/02/24/1078585.html'>阅读全文</a><img src ="http://www.cnblogs.com/chjw8016/aggbug/1078585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://chjw8016.cnblogs.com/" target="_blank">JackLee</a> 2008-02-24 09:43 <a href="http://www.cnblogs.com/chjw8016/archive/2008/02/24/1078585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.cnblogs.com/chjw8016/archive/2008/02/24/1078585.html'>http://www.cnblogs.com/chjw8016/archive/2008/02/24/1078585.html</a><img src ="http://www.cnblogs.com/huangchangnan/aggbug/1170120.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41800/" target="_blank">[新闻]Google放出Android开发路线图</a>]]></description></item><item><title>[导入]《Head.First设计模式》的学习笔记（5）－－工厂方法模式</title><link>http://www.cnblogs.com/huangchangnan/articles/1147153.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 10 Apr 2008 09:33:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/articles/1147153.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1147153.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/articles/1147153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1147153.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1147153.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 意图：定义一个用于创建对象的接口，让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
结构：
实例：下面我们以Pizza店的例子来谈谈&#8220;工厂方法模式&#8221;的来龙去脉，我们学习的思路是&#8220;原始设计－－&gt;简单工厂－－&gt;工厂方法&#8221;。
情景分析：假如你有一个Pizza店，那么你的Pizza订单可能会写成如...&nbsp;&nbsp;<a href="http://www.cnblogs.com/wxj1020/archive/2008/04/09/1143913.html">阅读全文</a><img src="http://www.cnblogs.com/wxj1020/aggbug/1143913.html" width="1" height="1"  alt="" /><br />
<br />
<div align="right"><a style="text-decoration: none;" href="http://wxj1020.cnblogs.com/" target="_blank">长空新雁</a> 2008-04-09 08:29 <a href="http://www.cnblogs.com/wxj1020/archive/2008/04/09/1143913.html#Feedback" target="_blank" style="text-decoration: none;">发表评论</a></div>
<br />
文章来源:<a href="http://www.cnblogs.com/wxj1020/archive/2008/04/09/1143913.html">http://www.cnblogs.com/wxj1020/archive/2008/04/09/1143913.html</a> 
<img src ="http://www.cnblogs.com/huangchangnan/aggbug/1147153.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item><item><title>[导入]《Head.First设计模式》的学习笔记（4）－－装饰者模式</title><link>http://www.cnblogs.com/huangchangnan/articles/1147154.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 10 Apr 2008 09:33:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/articles/1147154.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1147154.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/articles/1147154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1147154.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1147154.html</trackback:ping><description><![CDATA[摘要: 意图：动态地将责任附加到对象上。若要扩展功能，装饰者提供了比继承更有弹性的替代方案。结构： 例子：下面我们以星巴兹（Starbuzz）的订单系统为例加以说明。需求分析：1）、星巴兹的饮料（Beverage）种类繁多，主要有HouseBlend、DarkRoast、Decaf、Espresso。2）、星巴兹的调料很多，主要有Steamed Milk、Soy、Mocha、Whip。3）、星巴兹的饮料价&nbsp;&nbsp;<a href='http://www.cnblogs.com/huangchangnan/articles/1147154.html'>阅读全文</a><img src ="http://www.cnblogs.com/huangchangnan/aggbug/1147154.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item><item><title>[导入]《Head.First设计模式》的学习笔记（3）－－观察者模式</title><link>http://www.cnblogs.com/huangchangnan/articles/1147155.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 10 Apr 2008 09:33:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/articles/1147155.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1147155.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/articles/1147155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1147155.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1147155.html</trackback:ping><description><![CDATA[摘要: 意图：定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。结构： 例子：下面以模拟气象站系统来加以说明。需求分析：该系统的需求如下：1、气象站能够追踪目前的天气状况，包括温度、湿度、气压、2、气象站能够提供三种布告板，分别显示目前天气状况、气象统计和简单的预报。3、布告板上的数据必须实时更新。4、气象站必须提供一组API，供其他开发人员开发其他&nbsp;&nbsp;<a href='http://www.cnblogs.com/huangchangnan/articles/1147155.html'>阅读全文</a><img src ="http://www.cnblogs.com/huangchangnan/aggbug/1147155.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item><item><title>[导入]《Head.First设计模式》的学习笔记（2）－－策略模式</title><link>http://www.cnblogs.com/huangchangnan/articles/1147156.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 10 Apr 2008 09:33:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/articles/1147156.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1147156.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/articles/1147156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1147156.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1147156.html</trackback:ping><description><![CDATA[<p>先对策略模式有一个总体认识。</p>
<p><strong>意图</strong>：定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。</p>
<p><strong>结构</strong>：</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_2.png"><img style="border-width: 0px;" alt="image" src="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_thumb.png" width="539" border="0" height="182" /></a> </p>
<p>下面通过鸭子模拟器的设计来具体介绍。</p>
<p>公司需要设计一套鸭子模拟器系统，该系统的第一次需求为：鸭子能够戏水；鸭子能够呱呱叫。根据该需求系统设计如下：</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_18.png"><img style="border: 0px none ;" alt="image" src="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_thumb_8.png" width="577" border="0" height="286" /></a> </p>
<p>这个设计主要用了父类鸭子和子类绿头鸭、红头鸭，这样设计的目的是为了达到代码的复用。</p>
<p>过了一段时间，公司希望该系统能够满足新的需求：有些鸭子会飞。因此该系统需要进行修改，修改后的系统可能如下：</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_6.png"><img style="border-width: 0px;" alt="image" src="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_thumb_2.png" width="580" border="0" height="284" /></a> </p>
<p>该系统在父类中加了&#8220;fly（）&#8221;方法（在父类中加该方法是为了实现代码的复用）。这里就出现了两个问题：</p>
<p>（1）、所有的鸭子都会飞了。</p>
<p>（2）、所有鸭子的叫声都一样，都是&#8220;呱呱&#8221;叫。</p>
<p>注：这两个问题可以通过子类中方法覆盖来解除，但这样处理不是很好。鸭子的类别越多，这种处理的缺点就越明显。</p>
<p>其实这个系统的变化点是鸭子的叫声和鸭子的飞行能力，因此我们很容易想到把鸭子的叫声和鸭子的飞行能力做成接口，把这些变化的地方封装起来，这样上面的两个问题都可以解决，所以系统可能被修改为下面的样子：</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_8.png"><img style="border-width: 0px;" alt="image" src="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_thumb_3.png" width="592" border="0" height="239" /></a> </p>
<p>MallardDuck和RedheadDuck既会飞又会叫，RubberDuck只会叫不会飞，DecoyDuck不会飞也不会叫。应该说这个系统没有问题了，从表面看这种设计完全符合需求，而且完全符合面向对象的理念，但是当鸭子的类别很多时，你会发现这种设计缺乏代码的复用，这两个独立出来的接口似乎没有任何意义，根本无法减轻工作量，还不如原来的设计呢。所以你可能会想到问题的关键是接口中的方法没有实现，那我们该怎么办呢？</p>
<p>我们的做法是把接口做成类，运用组合的方法来实现需求。考虑到&#8220;针对接口编程，而不是针对实现编程&#8221;的设计原则，我们的系统可能就会设计成如下的结构，这个结构就是应用了&#8220;策略&#8221;模式。<br />
<a href="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_16.png"><img style="border: 0px none ;" alt="image" src="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First2_E7F2/image_thumb_7.png" width="670" border="0" height="461" /></a><br />
&nbsp;<br />
<strong>源代码下载</strong>：<a href="/Files/wxj1020/MiniSimuDuck.rar">/Files/wxj1020/MiniSimuDuck.rar</a></p>
<img src="http://www.cnblogs.com/wxj1020/aggbug/1115540.html" width="1" height="1"  alt="" /><br />
<br />
<div align="right"><a style="text-decoration: none;" href="http://wxj1020.cnblogs.com/" target="_blank">长空新雁</a> 2008-03-21 00:12 <a href="http://www.cnblogs.com/wxj1020/archive/2008/03/21/1115540.html#Feedback" target="_blank" style="text-decoration: none;">发表评论</a></div>
<br />
文章来源:<a href="http://www.cnblogs.com/wxj1020/archive/2008/03/21/1115540.html">http://www.cnblogs.com/wxj1020/archive/2008/03/21/1115540.html</a> 
<img src ="http://www.cnblogs.com/huangchangnan/aggbug/1147156.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item><item><title>[导入]《Head.First设计模式》的学习笔记（1）</title><link>http://www.cnblogs.com/huangchangnan/articles/1147157.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 10 Apr 2008 09:33:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/articles/1147157.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1147157.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/articles/1147157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1147157.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1147157.html</trackback:ping><description><![CDATA[<p>书中列举了一些让大脑就范的原则，其实这也是我们在学习中应该遵循的原则。这些原则如下：</p>
<p>1、慢一点，你理解的越多，需要记的就越少。</p>
<p>2、勤做练习，自己记笔记。</p>
<p>3、上床睡觉之前不要再看别的书了，或者至少不再看其他有难度的东西。</p>
<p>4、要喝水，而且要多喝点水。</p>
<p>5、大声说出来。</p>
<p>6、听听你的大脑怎么说。</p>
<p>7、要有点感觉！</p>
<p>8、设计一点东西！</p>
<p><strong>书中列举的设计原则：</strong></p>
<p>1、封装变化。找出应用中可能需要变化之处，把他们独立出来，不要和那些不需要变化的代码混在一起。</p>
<p>2、针对接口编程，而不是针对实现编程。</p>
<p>举例说明：</p>
<p>假设有一个抽象类Animal，有两个具体的实现（Dog与Cat）继承Animal。</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First1_B94F/image_4.png"><img style="border-width: 0px;" alt="image" src="http://www.cnblogs.com/images/cnblogs_com/wxj1020/WindowsLiveWriter/Head.First1_B94F/image_thumb_1.png" width="244" border="0" height="187" /></a> </p>
<p>&#8220;针对实现编程&#8221;的做法：Dog d = new Dog();d.bark();</p>
<p>&#8220;针对接口编程&#8221;的做法：Animal animal = new Dog();animal.makeSound();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者：Animal animal = getAnimal();animal.makeSound();</p>
<p>3、多用组合，少用继承。</p>
<p>原因：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a、继承会使类无限膨大，可能会使类变得臃肿。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b、子类可能会继承父类中那些无用甚至有害的方法。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c、组合比继承更灵活，可以实现在执行中动态改变对象的功能。</p>
<p>4、为了交互对象之间的松耦合设计而努力。</p>
<p>5、类应该对修改关闭，对扩展开放。</p>
6、要依赖抽象，不要依赖具体类。<br />
解释：不要让&#8220;高层组件&#8221;依赖&#8220;低层组件&#8221;，而且，不管&#8220;高层组件&#8221;还是&#8220;低层组件&#8221;，两者都应该依赖于抽象。<br />
避免违反该原则的几个方针：<br />
1）、变量不可以持有具体类的引用。<br />
如果使用new，就会持有具体类的引用，可以使用工厂来避开这种引用。<br />
2）、不要让类派生自具体类。<br />
如果派生自具体类，就会依赖具体类，可以派生自抽象或接口。<br />
3）、不要覆盖基类中已实现的方法。<br />
如果覆盖基类中已实现的方法，那么基类就不是一个真正适合被继承的类。基类中已实现的方法应该被所有子类所共享。<br />
（设计原则未完，待续）。<br />
<br />
<strong>下一篇记录&#8220;策略模式&#8221;。</strong>
<p>&nbsp;</p>
<img src="http://www.cnblogs.com/wxj1020/aggbug/1113185.html" width="1" height="1"  alt="" /><br />
<br />
<div align="right"><a style="text-decoration: none;" href="http://wxj1020.cnblogs.com/" target="_blank">长空新雁</a> 2008-03-19 14:38 <a href="http://www.cnblogs.com/wxj1020/archive/2008/03/19/1113185.html#Feedback" target="_blank" style="text-decoration: none;">发表评论</a></div>
<br />
文章来源:<a href="http://www.cnblogs.com/wxj1020/archive/2008/03/19/1113185.html">http://www.cnblogs.com/wxj1020/archive/2008/03/19/1113185.html</a> 
<img src ="http://www.cnblogs.com/huangchangnan/aggbug/1147157.html?type=2" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item><item><title>日　常　生　活　表　現</title><link>http://www.cnblogs.com/huangchangnan/archive/2008/04/10/1147147.html</link><dc:creator>黄牛</dc:creator><author>黄牛</author><pubDate>Thu, 10 Apr 2008 09:30:00 GMT</pubDate><guid>http://www.cnblogs.com/huangchangnan/archive/2008/04/10/1147147.html</guid><wfw:comment>http://www.cnblogs.com/huangchangnan/comments/1147147.html</wfw:comment><comments>http://www.cnblogs.com/huangchangnan/archive/2008/04/10/1147147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/huangchangnan/comments/commentRss/1147147.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/huangchangnan/services/trackbacks/1147147.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.cnblogs.com/huangchangnan/archive/2008/04/10/1147147.html'>阅读全文</a><img src ="http://www.cnblogs.com/huangchangnan/aggbug/1147147.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item></channel></rss>