<?xml version="1.0" encoding="gb2312"?>

<rss version="2.0">
    <channel>
    <title>nexttime的新家</title>
    <link>http://zyingp.blog.tianya.cn/</link>
    <description>呵呵
    </description>

    <item>
      <title><![CDATA[wellcome my old blog]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-4-27星期三(Wednesday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1624763&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/>http://bbs.nju.edu.cn/blogdoc?userid=nexttime]]></description>
	  <comments>2005-4-27 23:35:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1624763&amp;idWriter=0&amp;Key=0" target="_blank">(0)</a></comments>
    </item>

    <item>
      <title><![CDATA[有时候人就需要感动阿]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-4-19星期二(Tuesday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1562242&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>    有很多时候我们会感动：被曲折爱情、被传奇的经历、等等<BR>终于我发现一个真理，哈哈，就是人都是被自己没做到（或难做到）的事情感动]]></description>
	  <comments>2005-4-19 2:06:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1562242&amp;idWriter=0&amp;Key=0" target="_blank">(0)</a></comments>
    </item>

    <item>
      <title><![CDATA[徐本禹说：我很孤独，很寂寞，内心十分痛苦……]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[未分类]]></category> <pubDate>2005-4-11星期一(Monday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1506783&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>2004年4月，徐本禹回到母校华中农大做了一场报告。第一句话是：“我很孤独，很寂寞，内心十分痛苦，有几次在深夜醒来，泪水打湿了枕头，我快坚持不住了……”本来以为会听到豪言壮语的学生们惊呆了，沉默了，许多人的眼泪夺眶而出。<BR><BR>回看了一下当初的帖子，这段真是TMD说得太煽情了，看得我还是哽咽了一下]]></description>
	  <comments>2005-4-11 0:34:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1506783&amp;idWriter=0&amp;Key=0" target="_blank">(0)</a></comments>
    </item>

    <item>
      <title><![CDATA[要写8篇思想汇报]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-4-9星期六(Saturday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1499005&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>唉，可不可以再过几年转正阿，ft]]></description>
	  <comments>2005-4-18 16:27:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1499005&amp;idWriter=0&amp;Key=0" target="_blank">(2)</a></comments>
    </item>

    <item>
      <title><![CDATA[AOP及其Java实现机制]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[求知                ]]></category> <pubDate>2005-4-2星期六(Saturday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1443466&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/>发信人: robaggio (Knock knock knockin' on heaven's door), 信区: SoftEng <BR>标  题: AOP及其Java实现机制  <BR>发信站: 哈工大紫丁香 (Wed Mar 30 03:19:52 2005), 转信 <BR><BR>1引言 <BR>传统的编程技术，采用分解的方式将一个软件系统划分为相对较小的、易于分析、理解的模块，如果这些模块仍难以分析、理解，则迭代的将其分解为更小的模块，直到这些模块可以容易的分析、理解、设计与编码。通过对这些模块进行分析，设计，然后使用相应的编程语言实现这些模块，再以编程语言所定义的方式将这些模块组装起来，形成最终的软件系统。例如，面向过程编程中，将系统分解为完成单一功能的函数，并通过函数之间的调用完成复杂的功能，最终形成这个系统。面向对象编程中，通过分析，抽象出一系列具有一定属性与行为的对象，并通过这些对象之间的协作完成系统的功能。 <BR>传统的编程技术倾向于按照功能或行为对软件系统进行分割，这个分割的结果是实现某一功能的模块，如函数、过程、类等。但在编程实践中，人们认识到，软件系统中有些行为无法封装在单个的模块中，例如日志记录、事物处理、对上下文敏感的错误处理、性能优化等等。通常这些功能与行为不实现系统的业务功能，但辅助这些功能的实现，并散布在实现系统功能的诸多模块中，从而造成代码的纠结，这使得实现系统功能的模块的代码难于阅读、理解、调试、维护和扩展等，并使得纠结的代码难于复用。如果我们将实现系统业务功能的模块看作系统的纵向分解单元，那么上述分散在功能模块中的功能与行为就形成了一种横向的方面（Aspect），方面与模块形成了横切（Crosscutting），从而造成传统的编程技术无法将方面模块化，造成两种代码纠结（Tangling）在一起。 <BR>因此，我们需要一种新的编程思想，对系统中的横切方面进行处理，解决由此造成的代码纠结问题，并使方面可模块化，促进功能模块与方面彼此的复用。 <BR><BR>2 AOP简介 <BR>面向方面编程（Aspect-Oriented Programming，AOP）就是这样一种区别于传统编程技术的新的编程思想，最初由Gregor Kiczales在施乐的Palo Alto研究中心领导的一个研究小组于1997年提出。AOP正是基于方面与模块形成横切，造成代码纠结这一观察提出的，并提出了一种新的编程思路来解决这一问题。之后，AOP经由几个不同小组的努力在各自的方向上得到了发展，到目前为止，AOP仍处于发展阶段。 <BR><BR>2.1 AOP的基本思想 <BR>如前所述，造成代码纠结的原因在于传统编程技术中，软件系统中非业务功能实现的代码无法模块化，散布在实现业务功能的代码中造成的。这里，我们引入关注点（Concern）的概念，关注点就是软件系统中需要解决的问题。软件系统的业务功能组成了核心关注点（Core Concerns），也就是软件系统要解决的问题，而诸如日志记录，事物处理等关注点就形成了横切关注点（Crosscutting Concerns），因为，这些关注点散布在核心关注点中，相互形成了横切的关系，横切关注点也就是前面提到的方面这一概念。 <BR>有鉴于此，AOP提出的解决方法是对这两种相互横切的关注点分别进行编码，使用传统的编程语言对核心关注点编程，使用面向方面的编程语言对横切关注点，也就是方面进行编程。然后使用一种机制将这两种代码自动混合起来，形成最终的代码。在这里，面向方面的编程语言可以是已有编程语言的扩展（AspectJ，AspectC++，AspectC，AspectC#，Apostle等），或是一种新的语言，设计用于编写方面的代码（Caesar，D2AL，JasCo等）。而将两种代码混合的机制称为织入（Weaving），实现这一机制的工具称为织入器（Weaver）。因此，对方面单独编码，并通过适当的织入机制使两种代码混合，构成了AOP解决代码纠结问题的基石。 <BR><BR>2.2 织入机制 <BR>如前所述，织入是实现AOP的一个重要机制，织入的实现机制有多种，基本上可以分为两类，静态织入与动态织入。静态织入是指在业务功能代码中的适当位置，比如某段代码执行前，或执行后，将方面中的编码插入，从而形成混合的编码。方面中的编码在程序运行前，已被内联至业务功能代码中，因此，代码可以被优化，从而使织入产生的开销最小化，最终产生的混合代码，其执行速度接近为使用AOP方式编写的代码。但是，静态织入无法做到在程序运行时，根据运行上下文动态的决定插入的方面代码，动态织入则可以做到这一点。动态织入可以在程序运行时，根据上下文决定调用的方面，它们的先后顺序，增加或删除一个方面等。 <BR>而根据织入的时间，又可以分为三类，编译时，载入时，运行时。编译时织入可以在编译前进行预处理，将两种代码自动混合，将方面中的代码自动插入到功能模块代码的合适位置处，也可在编译后，对编译后的代码进行操作。载入时织入是在代码载入时，实现代码的织入。运行时织入则在运行时，根据对方法的调用执行适当的方面代码以实现织入。 <BR>以AOP的Java实现为例，包括使用反射（Reflection），基于动态代理（Dynamic Proxy）或其它机制的拦截框架，基于元数据（Metadata）的操作，以及类载入时对字节码的操作等。随着AOP应用的进一步推广，相信会有更多新的织入方式出现。 <BR><BR>3 AOP实现机制 <BR>根据来自于AOSD（Aspect-Oriented Software Development，http://aosd.net）的统计，目前与AOP相关的项目已达近百种，而基于Java的AOP实现机制也有二十多种，以下所列举的是商业上得到成熟应用的几种基于Java的AOP的实现机制。<BR><BR><BR>3.1 AspectJ <BR>AspectJ是目前最完善的AOP语言，由AOP的首倡者Gregor Kiczales领导的一个小组提出并得到发展。AspectJ是对Java编程语言的扩展，通过增加了一些新的构造块支持对横切关注点的模块化封装，通过对源代码级别的代码混合实现织入，是一种典型的使用静态织入的AOP实现机制。AspectJ提供了两种横切实现机制，一种称为动态横切（Dynamic Crosscutting），另一种称为静态横切（Static Crosscutting）。 <BR>动态横切是指在程序执行的某一个明确的点上运行额外的，预先定义好的实现，是一种静态实现机制，并非是动态的。为了实现动态横切，AspectJ中引入了四个新的概念：连接点（Join Point），切入点（Pointcut），参考（Advice）和方面（Aspect）。连接点是明确定义的程序执行过程中的一个点，切入点则是指一组相关的连接点，参考定义了在连接点执行的额外实现，方面则是指对横切关注点的模块化封装实现的单元，类似于AOP中的类，由切入点，参考与普通的Java成员声明组成。如前所述，连接点是程序执行中明确定义的点，比如，类接受到方法调用时，方法调用时，属性访问时都是连接点的例子，在连接点处可以执行预定义的额外实现。而要指明在哪些连接点上执行，则需要定义切入点，切入点可以在程序运行时匹配特定的连接点，AspectJ中预定义了一系列标准切入点，包括方法与构造器的调用，接受调用，执行，域的get，set访问，异常处理，实例类型匹配，处于类或方法体中，控制流中，调用者调用方法，类型的初始化与静态初始化，通过这些预定义切入点的组合可以实现自定义的、复杂的切入点。在编译时，方面中的参考将被转化为标准的方法，类代码中匹配切入点的连接点将被转化为一个静态的标记点，然后，这些静态?br> 静态横切是指对已存在的类型定义引入新的方法，属性等，与动态横切不同，静态横切不改变类型的动态行为，而是改变其静态结构，也即导入（Introduction）。通过在方面代码中声明方法，属性，需要继承的超类，接口等，在代码织入时，可以改变应用此方面的类的定义。 <BR><BR>3.2 AspectWerkz <BR>AspectWerkz是一个动态的AOP框架，利用对字节码的修改实现方面的织入，并使用Java虚拟机的动态替换字节码的能力实现动态AOP的要求。AspectWerkz没有扩展Java语言，方面、参考、切入点等均使用标准的Java构造块，即类以及方法来实现，并使用XML文件定义这些构造块，此外AspectWerkz还支持使用JavaDoc标记实现的运行期属性定义。AspectWerkz采用了与AspectJ相似的连接点模型，只是支持的连接点种类少于AspectJ，参考的类型一致。 <BR>AspectWerkz通过引入一个间接层，方面容器（Aspect Container）以及对字节码的转化，即代码织入实现动态AOP的要求，方面容器管理部署好的类、方面代码，并根据XML文件或JavaDoc注释中定义的方面，参考，切入点等得到连接点处相关的方面信息，并在程序的执行中控制执行流程，在匹配的连接点处执行适当的参考。 <BR>AspectWerkz通过类载入层次的适当位置拦截类载入从而实现字节码的修饰。AspectWerkz提供了两种织入模式实现AOP：静态织入以及动态织入。静态织入只在类载入时对字节码作一次性的转化，通过将类的方法实现移入AspectWerkz命名的方法中，将原方法中的代码改写，由方面容器调用适当的参考，并调用前述AspectWerkz添加的方法从而完成代码的织入。导入则由混合类型（Mixin）实现，用于为类增加新的方法，混合类型是一种使用接口与实现类的方式模拟多重继承的机制。AspectWerkz通过修改字节码使被导入的类实现混合类型的接口，并在接口定义的方法中，将控制交给容器管理器，由它来完成对实现的调用。静态织入可以在运行时动态的为切入点增加，删除参考，可以引入新的参考，但是无法定义新的切入点，这需要动态织入。动态织入由两阶段织入完成，分别为类载入阶段与激活阶段。首先，在类载入时，按照静态织入的方法，为需要实现动态织入的类的每个方法添加一个相应的空的方法，匹配连接点的方法除外。然后，在激活阶段，原方法体中的代码将被交换到类载入时新产生的方法中，原方法将实现静态织入时相同的处理，从而方面容器控制流程。前述代码交换是由热交换（HotSwap）实现的，这是JVM提供的API。通过方面容<BR>  <BR>3.3 SpringFramework <BR>SpringFramework是一个采用了反转控制（Inversion of Control, IoC）策]]></description>
	  <comments>2005-12-26 16:33:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1443466&amp;idWriter=0&amp;Key=0" target="_blank">(1)</a></comments>
    </item>

    <item>
      <title><![CDATA[shift! 想推我进火坑阿]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-3-31星期四(Thursday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1434280&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>   苏福特有个家伙居心不良，总想把我抓进千兆安全组里，我都和老谢说了不去，居然还有这个念头。<BR>   那个地方估计忙得不行，整天在linux代码堆里滚，我才不干，虽然￥可能多点，但我不受诱惑]]></description>
	  <comments>2005-3-31 21:41:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1434280&amp;idWriter=0&amp;Key=0" target="_blank">(0)</a></comments>
    </item>

    <item>
      <title><![CDATA[对于模式的“十大误解”——GoF成员之一谈模式]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[求知                ]]></category> <pubDate>2005-3-30星期三(Wednesday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1427043&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/>对于模式的“十大误解” <BR>作者：John Vlissides    来自：未知<BR><BR><BR>【译者语】现在“模式”这个词真是非常流行。就象任何流行的东西一样，对它的误解也真是不少。甚至在一些发表出来的文章中，也存在着各种各样的误解， 我想这会对读者造成非常糟糕的引导作用。早已想写一篇文章来澄清一些对模式的误解，却又因为水平所限难以成文。恰在此时， 我看到John Vlissides先生的《十大误解》，于是我便乐得当文抄公了。<BR><BR>关于设计模式，下面有十种错误的观点——很多都是很流行的观点。且看Vlissides先生如何拨开这些迷雾。<BR><BR>最近，围绕着模式的讨论日嚣尘上，人们对模式的混淆、惊惶和以讹传讹已经不是一点半点。这也从一个侧面反映出对于主流软件开发者来说，模式是一个多么新鲜的领域——尽管严格说来，它并不是一个新的领域。同时，模式也是一个飞速发展的领域，留下了大片的空白。而且，没错，我们这些模式的支持者也应该受批评，因为我们没有把自己的知识完完全全的教给别人。尽管我们这样想过，但是却没有这样做[BMR+96, Coplien96, CS95, GoF95, MRB98, VCK96]。<BR><BR>因此，我觉得自己有责任来纠正一些模式方面越来越夸张的误解——我常常听到的那些误解都足以形成自己的模式了。甚至连我也曾经想以模式来组成自己的软件结构……后来我才明白：“把所有的东西都变成模式”，这种想法本身就是错误的！总之，请记住，这篇文章不是在给模式社群的人们看的。我想，绝大多数的模式专家都会同意：下面这些都是很常见的误解。但是他们也许不会同意我消除这些误解的方式。<BR><BR>这几年以来，我听到过许多人谈论模式。把听到的这些东西整理一下，对模式的误解大概有三类：对于“模式是什么”的误解，对于“模式可以做什么”的误解，以及对于支持模式的人群的误解。我的“十大误解”都落入这三类之中，所以我就把这些误解都组织起来。首先，我们来看看关于“模式是什么”的误解。<BR><BR>误解之一：“模式是某种场景下某个问题的解决方案”<BR><BR>这个定义来自于Christopher Alexander[AIS+77]，所以如果把它称为“误解”，也许有人会把我目为异端。但是下面这个简单的反例就能让你看清它的缺点：<BR><BR>问题：我获奖的奖券就快过期了，我怎样拿到奖金？<BR>场景：离截止时间只有一小时，可是我家的小狗把奖券给吞了。<BR>解决方案：把狗开膛破肚，掏出奖券，然后飞奔到最近的兑奖地点。<BR><BR>这是“某种场景下某个问题的解决方案”，但它不是模式。还缺了什么？至少缺三样东西：<BR><BR>1. 可重复性。解决方案应该对应于外部的场景。<BR>2. 可传授性。一个解决方案应该可以移植到问题的不同情况上。（绝大多数模式的可传授性都建立在“约束”和“效果”的基础上。）<BR>3. 用来表示这个模式的名称。<BR><BR>确实，很难找到一个令人满意的定义。“模式讨论”邮件列表（patterns-discussion@cs.uiuc.edu）上正在进行的讨论也证明了这一点。难以定义的一大原因是：模式既是一个事物，也是对类似事物的描述。要区分这两者，有一种办法：“模式”这个术语只用来指代模式的描述，同时用“模式实例”来指代模式的具体应用。<BR><BR>但是，术语的定义很可能是白费力气，因为一个定义可能对一个人（比如程序员）有意义，但是对另一个人（比如只能看到书面材料的项目主管）却毫无意义。当然，我不打算在这里提出什么最终定义。但是，任何对模式要素的规定，除了必须包括问题、解决方案和场景之外，都必须提及可重复性、可传授性和名称。<BR><BR>误解之二：“模式就是行话、规则、编程技巧、数据结构……”<BR><BR>我通常把这些误解统称为“蔑视”。如果你试图把某些不熟悉的东西简化为熟悉的东西，产生这种想法是很自然的，尤其是当你没有特别的兴趣去钻研这些不熟悉的东西时。另外，某些人经常拿新瓶装陈酒，然后大吹“创新”、“革命”一类的口号。保持警惕也是好的。<BR><BR>但是，这种蔑视通常不是来自亲身体验，而是来自肤浅的认识和一点点冷嘲热讽的。而且，没有什么东西是真正“全新”的。人们的脑海中一直都存在着各种各样的模式，只不过我们现在刚开始为模式命名、将模式记录下来。<BR><BR>来逐个说明这些看法：的确存在着模式的行话，例如“模式”这个词，例如“约束”，例如Alexander的“无名质量”，等等。但是模式是不能简化为行话的。与其他计算机科学领域相比，模式引入的新术语实在是少得可怜。对于听众来说，好的模式本来就很容易接受。在说明一个模式的时候也许有必要引用问题领域的行话，但是几乎没有必要使用什么特定于模式领域的术语。<BR><BR>没有哪个模式是能让你不假思索就使用的规则（组件则正好相反），同时模式也不仅仅是“编程技巧”，尽管模式中的“方言（idiom）” 部分是特定于语言的。在我听来，“技巧”这个词带有轻蔑的意思，并且过分强调解决方案，而忽视了问题、场景和名称的重要性。<BR><BR>毫无疑问，你也曾经听说过一次创新被接受的三个阶段：首先，它被当作垃圾扔在一边；然后，人们会认为它不具可实施性；最后，大家都明白它的意义时，它也没有意义了——“我们一直都这样做”。现在，模式还没有完全走出第一个阶段。<BR><BR>误解之三：“理解一个，就理解了全部”<BR><BR>一刀切的规则往往是不公平的，而人们对模式却更加一刀切。模式的领域、内容、范围、形式、质量……这个领域大得吓人，只需要随手翻翻PLoP 的书[CS95, MRB98, VCK96]就能看出。不同的人写出不同的模式，而模式的变化甚至比作者还要多。象Alistair Cockburn、Jim Coplien、Neil Harrison 和Ralph Johnson 这样的作者已经超越了最初大量记录不同领域、不同形式模式的阶段。只看几个例子就对模式做一个笼统的结论，这样的结论必定是错误的。<BR><BR>误解之四：“模式需要有工具或方法学的支持才会有效”<BR><BR>在过去的五年中，我记录、使用并且帮助其他人使用模式，还至少帮助完成了一个基于模式的工具[BFV+96]，所以我可以很有把握的说：模式的绝大多数好处都来自于原封不动的使用——也就是说，没有任何形式的外部支持。<BR><BR>在谈到这个主题的时候，我通常会指出模式带来的四大好处：<BR><BR>1. 它们记录了专家的经验，并且让非专家也能理解。<BR>2. 它们的名称构成了一份词汇表，帮助开发者更好的交流。<BR>3. 它们帮助人们更快的理解一个系统——只要这个系统是用模式的方式描述的。<BR>4. 它们使系统的重组变得更容易，不管原来的系统是否以模式的方式设计的。<BR><BR>过去，我一直认为第一项是模式最大的好处。现在我认识到，第二条起码也同样重要。请想一想，在一个开发项目的过程中，有多少字节的信息在开发者之间流动（包括口头的和电子的）？我猜就算没有1G也有好几兆。（在推出了《设计模式》之后，我已经收到了好几十兆给GoF的电子邮件。而且我们所描述的还都是小型到中型的软件开发项目。）由于有如此之大的信息交流量，所以效率上任何微小的提升都能大量节约时间。在这个意义上，模式拓宽了人们交流的带宽。我对第三、四条的评价也在逐渐提高，特别是在项目越来越大、软件生存周期越来越长的今天。<BR><BR>至少在短期内，模式主要存在于大脑中，而不存在于工具中。如果有了方法学或自动化工具的支持，应该还有其他的收益，但是我相信这些都只是蛋糕上的奶油，而不是蛋糕本身，甚至都不能算蛋糕的一层。<BR><BR>* * *<BR><BR>到目前为止，我说到的误解都是关于“模式是什么”的。现在来看看关于“模式可以做什么”的误解。这里有两种不同的风格：夸大其词的和心存疑虑的。<BR><BR>误解之五：“模式可以保证软件的复用性、更高的生产力、世界的和平……”<BR><BR>道理很简单，模式什么都不保证。它们甚至有可能无法给你带来利益。在创造新事物的过程中，模式无法取代人的位置。它们只是带来一种希望，有可能让一个缺乏经验的、甚至是未入门的，但是有能力、有创造性的人尽快获得设计的能力。<BR><BR>人们经常说：好的模式会让读者有“啊！”的回应。实际上，只有当模式恰好拨动了读者的某一根心弦时，他们才会有这样的反应。如果没有，模式就只象森林里普通的一棵树。因此，什么是好的模式？不管它写得有多好，如果不能引起读者的共鸣，它又怎能算是好的模式？<BR><BR>模式只是开发者的工具箱中的另一件工具，对模式寄以过高的期望只会适得其反。准备充分，然后做最坏的打算——这就是防止受骗、消除对抗最好的方法。<BR><BR>误解之六：“模式可以‘生成’整个软件体系”<BR><BR>这个误解与上一个有点相似，不过侵略性稍微少些。<BR><BR>每过一段时间，模式论坛上就会讨论一次模式的生成能力。按照我的理解，“生成能力”是指模式创建最终行为的能力。很多人认为，模式可以帮助读者解决模式本身没有明确提出的问题。我读过的一些书里也有同样的观点。<BR><BR>对于我来说，“生成能力”的关键是模式的可传授性——约束及其解决，或者对于效果的讨论。在你定义、精炼一个体系结构时，这些观察是特别有用的。但是模式本身并不制造任何东西——任何东西都是由人来制造的。而且，模式不可能覆盖体系结构的每个方面。给我任何一个有实际价值的设计，我都能找出其中模式没有涉及的设计问题。也许这些问题不常见、不具可重复性，或者只是还没有以模式的形式记录下来。不管怎样，你都必须负责填补模式之间的空白——用你自己的创造性]]></description>
	  <comments>2005-12-26 16:33:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1427043&amp;idWriter=0&amp;Key=0" target="_blank">(1)</a></comments>
    </item>

    <item>
      <title><![CDATA[最近去过很多论坛]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-3-27星期日(Sunday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1403365&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>天涯、科院星空、未名、两全其美、一些野的百合。感到要速度和内容都好确实难寻阿，比不上百合给我的感觉，我现在都不知道哪好，可能还就是继续游荡吧。<BR><BR>                                                            继续伤百合……]]></description>
	  <comments>2005-3-27 19:49:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1403365&amp;idWriter=0&amp;Key=0" target="_blank">(0)</a></comments>
    </item>

    <item>
      <title><![CDATA[为我女朋友而写]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-3-25星期五(Friday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1392000&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>最喜欢你温柔的样子/让我懂得生活的美好/最喜欢你依恋的样子/让我感受自己的重要<BR>如果微风吹乱你的头发/我会为你束起/让你知道我的关心<BR>如果寒风侵袭你的身体/我会紧紧拥抱你/我要我们永远在一起]]></description>
	  <comments>2005-3-28 14:52:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1392000&amp;idWriter=0&amp;Key=0" target="_blank">(4)</a></comments>
    </item>

    <item>
      <title><![CDATA[携数千马甲与百合同泪！！]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-3-25星期五(Friday)晴</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1391482&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/><BR>   与同学说起，才发现百合的关闭，自己的损失比想象中的还要大，回想当初自编的的注册机、挂战机、上战机、发贴机，真是令人神伤。不过好在这些马甲们也已有贡献，比如在陈主任的事件中、在帮各位朋友顶贴中……<BR>天涯取代不了我心中的百合，那里有着我的成长，我的情与爱（爱情也在那开始，呵呵）]]></description>
	  <comments>2005-3-27 19:43:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1391482&amp;idWriter=0&amp;Key=0" target="_blank">(2)</a></comments>
    </item>

    <item>
      <title><![CDATA[第一篇]]></title>
	  <author>nexttime</author>
	  <category><![CDATA[生活                ]]></category> <pubDate>2005-3-23星期三(Wednesday)小雨</pubDate> 
      <link>http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1370715&amp;idWriter=0&amp;Key=0</link>
      <description><![CDATA[<br/>开张了，谁叫现在的百合这么难看！]]></description>
	  <comments>2005-3-30 22:02:00<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=125117&amp;PostID=1370715&amp;idWriter=0&amp;Key=0" target="_blank">(4)</a></comments>
    </item>

  </channel>
</rss>
