﻿<?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-flyhorse-文章分类-Java</title><link>http://www.blogjava.net/flyhorse/category/2585.html</link><description>Eclipse,J2EE框架，SOA，XML</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 14:25:29 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 14:25:29 GMT</pubDate><ttl>60</ttl><item><title>设计模式基础（设计模式笔记一）</title><link>http://www.blogjava.net/flyhorse/articles/10868.html</link><dc:creator>飞马</dc:creator><author>飞马</author><pubDate>Wed, 24 Aug 2005 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/flyhorse/articles/10868.html</guid><wfw:comment>http://www.blogjava.net/flyhorse/comments/10868.html</wfw:comment><comments>http://www.blogjava.net/flyhorse/articles/10868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flyhorse/comments/commentRss/10868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flyhorse/services/trackbacks/10868.html</trackback:ping><description><![CDATA[<P>设计模式---可复用面向对象软件的基础<BR><BR>1&nbsp; 设计模式四要素<BR>&nbsp;&nbsp;&nbsp; 模式名称、问题、解决方案、效果<BR><BR>2&nbsp; 设计模式描述<BR>&nbsp;&nbsp;&nbsp; 模式名和分类、意图、别名、动机、适用性、结构、参与者、协作、效果、实现、代码示例、已知应用（至少两个）、相关模式<BR><BR>3&nbsp; 设计模式编目<BR>&nbsp;&nbsp;&nbsp; 即设计模式分类<BR><BR>4&nbsp; 设计模式作用<BR>&nbsp;&nbsp;&nbsp; 1）寻找合适的对象<BR>&nbsp;&nbsp;&nbsp; 2）决定对象的粒度<BR>&nbsp;&nbsp;&nbsp; 3）制定对象接口<BR>&nbsp;&nbsp;&nbsp; 4）描述对象的实现<BR>&nbsp;&nbsp;&nbsp; 5）运用复用机制<BR>&nbsp;&nbsp;&nbsp; 6）关联运行时刻和编译时刻的结构<BR>&nbsp;&nbsp;&nbsp;&nbsp;7）设计应支持变化<BR><BR>5&nbsp;&nbsp; 重要概念<BR>1 ）类继承与接口继承<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类继承根据一个对象的实现定义了另一个对象的实现。它是代码和表示的共享机制。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 接口继承（子类型）描述了一个对象什么时候能被用来替代另一个对象。<BR><BR>2）针对接口编程，而不是针对实现编程。<BR><BR>3）3种复用技术<BR>&nbsp;&nbsp;&nbsp;&nbsp; 继承、组合（委托是组合的一种）与参数化类型<BR>&nbsp;&nbsp;&nbsp;&nbsp; 组合技术是通过获得对其他对象的引用而在运行时刻动态定义的。允许你在运行时刻改变被组合的行为，但是它存在间接性，比较低效。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 继承在编译时刻静态定义的，可直接使用。允许你提供操作的缺省实现，并通过子类重定义这些操作。破坏了封装性。<BR>&nbsp;&nbsp;&nbsp; 参数化类型允许你改变类所用到的类型。如generic(Ada,java预留)和templates(C++)<BR>&nbsp;&nbsp;&nbsp; 继承和参数化类型都不能在运行时刻改变。<BR>&nbsp;&nbsp;&nbsp; 注意：优先使用对象组合，而不是类继承。<BR><BR>　委托（delegation）使组合具有与继承同样的复用能力。<BR>&nbsp;&nbsp;4）2种复用层次<BR>&nbsp;&nbsp;&nbsp;&nbsp; 代码复用（如工具箱、类库）、设计复用（如框架）<BR><BR>&nbsp; 5）模式设计应该封装变化&nbsp;&nbsp;&nbsp; P20<BR><BR>&nbsp;&nbsp;6）聚合(aggregation) 与相识（acquaintance，也称为：关联、引用）<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 聚合意味着一个对象拥有另一个对象或对另一个对象负责。一般我们称一个对象包含另一个对象或者是另一个对象的一部分。聚合意味着聚合对象和其他所有者具有相同的生命周期。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相识意味着一个对象仅仅知道另一个对象。相识的对象可能请求彼此的操作，但是他们不为对方负责。相识是一种比聚合要弱的关系，它只标示对象间松耦合关系。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;聚合还是相识是由你的意图而不是由显式的语言机制决定的。它们的区别在编译时刻（源代码）很难看出来。</P><img src ="http://www.blogjava.net/flyhorse/aggbug/10868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flyhorse/" target="_blank">飞马</a> 2005-08-24 10:52 <a href="http://www.blogjava.net/flyhorse/articles/10868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>