﻿<?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-我的java天地-随笔分类-design</title><link>http://www.blogjava.net/toby/category/39237.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 18 Feb 2011 20:53:27 GMT</lastBuildDate><pubDate>Fri, 18 Feb 2011 20:53:27 GMT</pubDate><ttl>60</ttl><item><title>名字备份</title><link>http://www.blogjava.net/toby/archive/2011/02/18/344612.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 18 Feb 2011 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/02/18/344612.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/344612.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/02/18/344612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/344612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/344612.html</trackback:ping><description><![CDATA[绍齐<br />博文<br />梓晨<br />胤祥（寓意： 拥有金钱与权力。）<br />瑞霖（寓意： 吉祥的甘露。）<br />明哲（寓意： 拥有聪明的智慧。）<br />天翊（有翱翔天际，大展宏图之意。）<br />凯瑞（寓意： 吉祥 幸福 安康 ）<br />健雄（寓意： 身体强健的男子汉。）<br />耀杰（寓意： 才能出众的英杰。）<br />潇然（寓意： 自然脱俗，潇洒大方。）<br />子涵（取自`子部京涵`寓意： 拥有光明的前途与博大的胸怀。）<br />越彬（寓意： 博学文雅，超越过去。）<br />钰轩（有气质高贵，潇洒大气之意。）<br />智辉（寓意： 拥有辉煌的未来与智慧。）<br />致远 （出自诸葛亮的《诫子书》：“非淡泊无以明志,非宁静无以致远”）<br />俊驰（出自成语：俊才星驰）<br />雨泽 (恩惠像雨一样多)<br />烨磊 （光明磊落）<br />晟睿（“晟”是光明、兴盛的意思，读shèng；“睿”是智慧的意思）<br />文昊（昊的字意是：广大无边）<br />修洁（修：形容身材修长高大，洁：整洁）<br />黎昕 (黎：黎明 昕：明亮的样子 )<br />远航（好男儿，就放他去远航吧）<br />旭尧 (旭：旭日 尧：上古时期的贤明君主，后泛指圣人 )<br />鸿涛 (鸿：旺盛,兴盛 )<br />伟祺 (伟：伟大 祺 ：吉祥 )<br />荣轩 (轩：气度不凡 )<br />越泽 (泽：广博的水源)<br />浩宇 （胸怀犹如宇宙，浩瀚无穷）<br />瑾瑜 （出自成语――握瑾怀瑜，比喻拥有美好的品德）<br />皓轩 （意为：光明磊落，气宇轩昂）<br />擎苍 （顶天立地，男儿本色）（出自宋代诗人苏轼的《江城子`密州出猎》“…左牵黄,右擎苍…”）<br />擎宇（意思同上）<br />志泽 (泽：广域的水源 )<br />子轩 (轩：气度不凡 )<br />睿渊 (睿智;学识渊博)<br />弘文 (弘扬;文:文学家)<br />哲瀚 (拥有广大的学问)<br />雨泽 (恩惠)<br />楷瑞 (楷:楷模;瑞:吉祥)<br />建辉 (建造辉煌成就)<br />晋鹏( 晋：进也，本义，上进 鹏：比喻前程远大 )<br />天磊 (磊：众石累积 )<br />绍辉( 绍：继承 辉：光辉 )<br />泽洋 (广阔的海洋 )<br />鑫磊 (鑫：财富 )<br />鹏煊 (煊：光明，读xuānn )<br />昊强 (昊：苍天，苍穹 )<br />伟宸 (宸：古代君王的代称 )<br />博超 (博：博大 超：超越 )<br />君浩 (君：君子 浩：浩大 )<br />子骞 (骞：高举，飞起 )<br />鹏涛 (鹏：比喻气势雄伟 )<br />炎彬 (炎：燃烧 彬：形容文雅 )<br />鹤轩 (鹤：闲云野鹤 轩：气度不凡 )<br />越彬 （彬：形容文雅 ）<br />风华 （风华正茂 ）<br />靖琪 （靖：平安 琪：美玉 ）<br />明辉 （辉：光明 ）<br />伟诚 (伟：伟大 诚：诚实 )<br />明轩 (轩：气度不凡 )<br />健柏（(柏：松柏，是长寿的象征。“健柏”就是健康长寿的意思）<br />修杰（修：形容身材修长高大）<br />志泽 (泽：广域的水源 )<br />弘文 (弘扬,文:文学家)<br />峻熙 (峻:高大威猛;熙:前途一片光明)<br />嘉懿 (嘉:美好;懿:美好)<br />煜城 (照耀城市)<br />懿轩 (懿:美好;轩:气宇轩昂)<br />烨伟 (烨：光耀)<br />苑博 (博：博学)<br />伟泽 (伟：伟大 泽：广域的水源)<br />熠彤 (熠：光耀 彤：红色）<br />鸿煊 (鸿：大也 煊：光明）<br />博涛 (博：博学）<br />烨霖 （烨：光明）<br />烨华 （烨：光耀）<br />煜祺 （煜：照耀 祺：吉祥）<br />智宸 (智：智慧 宸：古代君王的代称）<br />正豪 （豪：豪气）<br />昊然 (昊：苍天，苍穹）<br />明杰 （明智，杰出）<br />立诚 （诚：诚实）<br />立轩 （轩：气度不凡）<br />立辉 （辉：辉煌）<br />峻熙 (峻:高大威猛;熙:前途一片光明)<br />弘文 (弘扬;文:文学家)<br />熠彤 熠：光耀 彤：红色<br />鸿煊 鸿：大也 煊：光明<br />烨霖 烨：光明<br />哲瀚 (拥有广大的学问)<br />鑫鹏 鑫：财富 鹏：比喻气势雄伟<br />昊天 思聪 展鹏 笑愚 志强 炫明 雪松 思源 智渊 思淼<br />晓啸 天宇 浩然 文轩 鹭洋 振家 乐驹 晓博 文博 昊焱<br />立果 金鑫 锦程 嘉熙 鹏飞 子默 思远 浩轩 语堂 聪健<img src ="http://www.blogjava.net/toby/aggbug/344612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-02-18 11:58 <a href="http://www.blogjava.net/toby/archive/2011/02/18/344612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详解八大UML类图符号的表示法</title><link>http://www.blogjava.net/toby/archive/2010/08/25/329882.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 25 Aug 2010 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/08/25/329882.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/329882.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/08/25/329882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/329882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/329882.html</trackback:ping><description><![CDATA[
		<p>本文和大家重点讨论一下UML类图符号意义，在学习UML的过程中，你必须要了解UML符号的意义，相信通过本节的介绍你对UML类图符号有一定的了解。</p>
		<p>
				<strong>UML类图符号简介</strong>
		</p>
		<p>1.类（Class）：使用三层矩形框表示。<br />第一层显示类的名称，如果是抽象类，则就用斜体显示。<br />第二层是字段和属性。<br />第三层是类的方法。<br />注意前面的符号，‘+’表示public，‘-’表示private，‘#’表示protected。</p>
		<p>2.UML类图符号之接口：使用两层矩形框表示，与类图的区别主要是顶端有&lt;&lt;interface&gt;&gt;显示。<br />第一行是接口名称。<br />第二行是接口方法。</p>
		<p>3.UML类图符号之继承类（extends）：用空心三角形+实线来表示。</p>
		<p>4.UML类图符号之实现接口（implements）：用空心三角形+虚线来表示</p>
		<p>5.UML类图符号之关联（Association）：用实线箭头来表示，例如：燕子与气候</p>
		<p>6.UML类图符号之聚合（Aggregation）：用空心的菱形+实线箭头来表示<br />聚合：表示一种弱的‘拥有’关系，体现的是A对象可以包含B对象，但B对象不是A对象的一部分，例如：公司和员工<br />组合（Composition）：用实心的菱形+实线箭头来表示<br />组合：部分和整体的关系，并且生命周期是相同的。例如：人与手</p>
		<p>7.UML类图符号之依赖（Dependency）：用虚线箭头来表示，例如：动物与氧气</p>
		<p>8.UML类图符号之基数：连线两端的数字表明这一端的类可以有几个实例，比如：一个鸟应该有两只翅膀。如果一个类可能有无数个实例，则就用‘n’来表示。关联、聚合、组合是有基数的。</p>
<img src ="http://www.blogjava.net/toby/aggbug/329882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-08-25 13:41 <a href="http://www.blogjava.net/toby/archive/2010/08/25/329882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象UML中类关系</title><link>http://www.blogjava.net/toby/archive/2010/08/20/329440.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 20 Aug 2010 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/08/20/329440.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/329440.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/08/20/329440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/329440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/329440.html</trackback:ping><description><![CDATA[
		<p>如果你确定两件对象之间是is-a的关系，那么此时你应该使用继承；比如菱形、圆形和方形都是形状的一种，那么他们都应该从形状类继承而不是聚合。<br />如果你确定两件对象之间是has-a的关系，那么此时你应该使用聚合；比如电脑是由显示器、CPU、硬盘等组成的，那么你应该把显示器、CPU、硬盘这些类聚合成电脑类，而不是从电脑类继承。</p>
		<div class="postTitle">
				<span style="COLOR: red">
						<font color="#005880">类间的关系 </font>
				</span>
		</div>
		<p>网上关于此类的讨论非常多，发现对于该问题的理解各有各的说法，而各个说法中又相去甚远。通过浏览这些讨论以及对《O'Reilly - UML 2.0 In A Nutshell (2007)》的参考，发表一下自己的看法</p>
		<p>类间关系有很多种，在大的类别上可以分为两种：纵向关系、横向关系。</p>
		<p>纵向关系就是继承关系，它的概念非常明确，也成为OO的三个重要特征之一，这里不过多的讨论。</p>
		<p>横向关系较为微妙，按照UML的建议大体上可以分为四种：</p>
		<ol>
				<li>依赖    （Dependency） 
</li>
				<li>关联    （Association） 
</li>
				<li>聚合    （Aggregation） 
</li>
				<li>组合    （Composition） </li>
		</ol>
		<p>它们的强弱关系是没有异议的：依赖 &lt; 关联 &lt; 聚合 &lt; 组合</p>
		<p>然而它们四个之间的差别却又不那么好拿捏，需要好好体会。</p>
		<ol>
				<li>
						<span style="COLOR: #0000ff">
								<strong>依赖</strong>
						</span>： 
<ul><li>UML表示法：虚线 + 箭头 <br /><img height="58" alt="" src="http://www.uml.org.cn/oobject/images/1dfge.gif" width="321" border="0" /></li><li>关系：" ... uses a ..." 
</li><li>此关系最为简单，也最好理解，所谓依赖就是某个对象的功能依赖于另外的某个对象，而被依赖的对象只是作为一种工具在使用，而并不持有对它的引用。 
</li><li>典型的例子很多，比如：<br />class Human<br />{<br />    public void breath()<br />    {<br />        Air freshAir = new Air();<br />        freshAir.releasePower();<br />    }<br />    public static void main()<br />    {<br />        Human me = new Human();<br />        while(true)<br />        {<br />            me.breath();<br />        }<br />    }<br />}<br /><br />class Air<br />{<br />    public void releasePower()<br />    {<br />        //do sth.<br />    }<br />}<br /> <img style="LEFT: 569px; TOP: 888px" height="211" alt="" src="http://www.uml.org.cn/oobject/images/5qwer.gif" width="474" border="0" /></li><li>释义：一个人自创生就需要不停的呼吸，而人的呼吸功能之所以能维持生命就在于吸进来的气体发挥了作用，所以说空气只不过是人类的一个工具，而人并不持有对它的引用。 </li></ul></li>
				<li>
						<span style="COLOR: #0000ff">
								<strong>关联</strong>
						</span>： 
<ul><li>UML表示法：实线 + 箭头 <br /><img height="58" alt="" src="http://www.uml.org.cn/oobject/images/2wertf.gif" width="321" border="0" /></li><li>关系：" ... has a ..." 
</li><li>所谓关联就是某个对象会长期的持有另一个对象的引用，而二者的关联往往也是相互的。关联的两个对象彼此间没有任何强制性的约束，只要二者同意，可以随时解除关系或是进行关联，它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联，所以关联是可以共享的。 
</li><li>典型的例子很多，比如：<br />class Human<br />{<br />    ArrayList friends = new ArrayList();<br />    public void makeFriend(Human human)<br />    {<br />        friends.add(human);<br />    }<br />    public static void main()<br />    {<br />        Human me = new Human();<br />        while(true)<br />        {<br />            me.makeFriend(mySchool.getStudent());<br />        }<br />    }<br />} <br /><img style="LEFT: 561px; TOP: 1604px" height="141" alt="" src="http://www.uml.org.cn/oobject/images/6weds.gif" width="366" border="0" /></li><li>释义：人从生至死都在不断的交朋友，然而没有理由认为朋友的生死与我的生死有必然的联系，故他们的生命期没有关联，我的朋友又可以是别人的朋友，所以朋友可以共享。 </li></ul></li>
				<li>
						<span style="COLOR: #0000ff">
								<strong>聚合</strong>
						</span>：   
<ul><li>UML表示法：空心菱形 + 实线 + 箭头 <br /><img height="58" alt="" src="http://www.uml.org.cn/oobject/images/3dwses.gif" width="321" border="0" /></li><li>关系：" ... owns a ..." 
</li><li>聚合是强版本的关联。它暗含着一种所属关系以及生命期关系。被聚合的对象还可以再被别的对象关联，所以被聚合对象是可以共享的。虽然是共享的，聚合代表的是一种更亲密的关系。 
</li><li>典型的例子很多，比如：<br />class Human<br />{<br />    Home myHome;<br />    public void goHome()<br />    {<br />        //在回家的路上<br />        myHome.openDoor();<br />        //看电视<br />    }<br />    public static void main()<br />    {<br />        Human me = new Human();<br />        while(true)<br />        {<br />            //上学<br />            //吃饭<br />            me.goHome();<br />        }<br />    }<br />}<br /> <img style="LEFT: 477px; TOP: 2185px" height="221" alt="" src="http://www.uml.org.cn/oobject/images/7swedww.gif" width="566" border="0" /></li><li>释义：我的家和我之间具有着一种强烈的所属关系，我的家是可以分享的，而这里的分享又可以有两种。其一是聚合间的分享，这正如你和你媳妇儿都对这个家有着同样的强烈关联；其二是聚合与关联的分享，如果你的朋友来家里吃个便饭，估计你不会给他配一把钥匙。 </li></ul></li>
				<li>
						<span style="COLOR: #0000ff">
								<strong>组合</strong>
						</span>： 
<ul><li>UML表示法：实心菱形 + 实线 + 箭头 <br /><img height="58" alt="" src="http://www.uml.org.cn/oobject/images/4weswsw.gif" width="321" border="0" /></li><li>关系：" ... is a part of  ..." 
</li><li>组合是关系当中的最强版本，它直接要求包含对象对被包含对象的拥有以及包含对象与被包含对象生命期的关系。被包含的对象还可以再被别的对象关联，所以被包含对象是可以共享的，然而绝不存在两个包含对象对同一个被包含对象的共享。 
</li><li>典型的例子很多，比如：<br />class Human<br />{<br />    Heart myHeart = new Heart();<br />    public static void main()<br />    {<br />        Human me = new Human();<br />        while(true)<br />        {<br />            myHeart.beat();<br />        }<br />    }<br />}<br /><img style="LEFT: 321px; TOP: 2728px" height="215" alt="" src="http://www.uml.org.cn/oobject/images/8ferfe.gif" width="578" border="0" /></li><li>释义：组合关系就是整体与部分的关系，部分属于整体，整体不存在，部分一定不存在，然而部分不存在整体是可以存在的，说的更明确一些就是部分必须创生于整体创生之后，而销毁于整体销毁之前。部分在这个生命期内可以被其它对象关联甚至聚合，但有一点必须注意，一旦部分所属于的整体销毁了，那么与之关联的对象中的引用就会成为空引用，这一点可以利用程序来保障。心脏的生命期与人的生命期是一致的，如果换个部分就不那么一定，比如阑尾，很多人在创生后的某个时间对其厌倦便提前销毁了它，可它和人类的关系不可辩驳的属于组合。<br />在UML中存在一种特例，就是允许被包含对象在包含对象销毁前转移给新的对象，这虽然不自然，但它给需要心脏移植的患者带来了福音。 </li></ul></li>
		</ol>
<img src ="http://www.blogjava.net/toby/aggbug/329440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-08-20 11:19 <a href="http://www.blogjava.net/toby/archive/2010/08/20/329440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java常用模式代码示例</title><link>http://www.blogjava.net/toby/archive/2010/08/18/329196.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 18 Aug 2010 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/08/18/329196.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/329196.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/08/18/329196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/329196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/329196.html</trackback:ping><description><![CDATA[
		<p>package designPattern;</p>
		<p>import java.io.*;<br />import java.util.*;</p>
		<p>//*********创建型模式***************</p>
		<p>//factory method 1<br />//1具体的构造算法,和2构造出的具体产品由子类实现<br />interface Product {<br />}</p>
		<p>//或者我也提供一个工厂的接口,由这个抽象类来继承它</p>
		<p>abstract class Factory {<br />abstract public Product fmd();</p>
		<p>//我认为这个方方法的存在是,是对FactoryMethod方法的补充<br />//例如可以为生成的对象赋值,计算为生成对象应付何值,前后的日值<br />//且这些都是公用的,生成产品的最主要算法还是在FactoryMethod中,<br />//这个方法只是起辅助作用,这也是一种思维方法,将具体的算法实现在一个方法中<br />//而我不直接调用此方法,而使用另外的一个方法封装它,等到了更灵活的效果,而<br />//子类需实现的内容是FactoryMethod<br />//此方法是一个TemplateMethod<br />public Product creat() {<br />Product pd = null;</p>
		<p>System.out.println("before operation");</p>
		<p>pd = fmd();</p>
		<p>System.out.println("end operation");</p>
		<p>return pd;<br />}<br />}</p>
		<p>class Product1 implements Product {<br />}</p>
		<p>class Factory1 extends Factory {<br />public Product fmd() {<br />Product pd = new Product1();<br />return pd;<br />}<br />}</p>
		<p>//FactroyMethod 2<br />//这种方式简单实用<br />interface Producta {<br />}</p>
		<p>interface Factorya {<br />Producta create();<br />}</p>
		<p>class Producta1 implements Producta {}</p>
		<p>class Factorya1 implements Factorya {<br />public Producta create() {<br />Producta pda = null;<br />pda = new Producta1();<br />return pda;<br />} <br />}</p>
		<p>//AbstractFactory<br />//AbstractFactory与FactoryMethod的不同在于AbstractFactory创建多个产品<br />//感觉此模式没有什么大用</p>
		<p>//当然可以还有更多的接口<br />interface Apda {}</p>
		<p>interface Apdb {}</p>
		<p>interface Afactory {<br />Apda createA();<br />Apdb createB();<br />}</p>
		<p>class Apda1 implements Apda {}</p>
		<p>class Apdb1 implements Apdb {}</p>
		<p>//有几个接口就有几个对应的方法<br />class Afactory1 implements Afactory {<br />public Apda createA() {<br />Apda apda = null;<br />apda = new Apda1();<br />return apda;<br />}</p>
		<p>public Apdb createB() {<br />Apdb apdb = null;<br />apdb = new Apdb1();<br />return apdb;<br />}<br />}</p>
		<p>//Builder<br />//一个产品的生成分为生成部件和组装部件,不同的产品每个部件生成的方式不同<br />//而组装的方式相同,部件的生成抽象成接口方法,而组装的方法使用一个TemplateMethod方法</p>
		<p>interface Cpda {}</p>
		<p>class Cpda1 implements Cpda {}</p>
		<p>interface BuilderI {<br />void buildPart1();<br />void buildPart2();</p>
		<p>void initPd();<br />Cpda getPd();<br />}</p>
		<p>abstract class BuilderA implements BuilderI {<br />Cpda cpda;</p>
		<p>public Cpda getPd() {<br />initPd();</p>
		<p>//对对象的内容进行设置<br />buildPart1();<br />buildPart2();</p>
		<p>return cpda;<br />}<br />}</p>
		<p>class Builder extends BuilderA {<br />public void buildPart1() {<br />System.out.println(cpda);<br />}</p>
		<p>public void buildPart2() {<br />System.out.println(cpda);<br />}</p>
		<p>public void initPd() {<br />cpda = new Cpda1();<br />}<br />}</p>
		<p>//一个简单的生成产品的实现<br />//1<br />abstract class Fy {<br />public abstract void med1(); </p>
		<p>static class Fy1 extends Fy {<br />public void med1() {<br />}<br />}</p>
		<p>public static Fy getInstance() {<br />Fy fy = new Fy1();<br />return fy;</p>
		<p>//Fy fy = new Fy1() {//这种匿名内部类是静态的！！<br />//public void med1() {<br />//}<br />//};<br />//return fy;<br />}<br />}</p>
		<p>//2<br />interface Pdd {}</p>
		<p>class Pdd1 implements Pdd {}</p>
		<p>abstract class Fya {<br />public static Pdd getPd() {<br />Pdd pdd = new Pdd1();<br />return pdd;<br />}<br />}</p>
		<p>//Prototype 在java中就是clone,又包含深拷贝和浅拷贝<br />class CloneObja {<br />public CloneObja MyClone() {<br />return new CloneObja();<br />}<br />}</p>
		<p>class CloneObjb {<br />public CloneObjb MyClone() throws Throwable {<br />CloneObjb cobj = null;<br />cobj = (CloneObjb) pcl(this);<br />return cobj;<br />}</p>
		<p>//深度拷贝算法<br />private Object pcl(Object obj) throws Throwable {<br />ByteArrayOutputStream bao = new ByteArrayOutputStream(1000);<br />ObjectOutputStream objo = new ObjectOutputStream(bao);<br />objo.writeObject(obj);</p>
		<p>ByteArrayInputStream bai = new ByteArrayInputStream(bao.toByteArray());<br />ObjectInputStream obji = new ObjectInputStream(bai);</p>
		<p>Object objr = obji.readObject();<br />return objr;<br />} <br />}</p>
		<p>//Singleton<br />//一个类只有一个对象,例如一个线程池,一个cache<br />class Singleton1 {<br />public static Singleton1 instance = new Singleton1();</p>
		<p>private Singleton1() {<br />}</p>
		<p>public static Singleton1 getInstance() {<br />return instance;<br />}<br />}</p>
		<p>class Singleton2 {<br />public static Singleton2 instance;</p>
		<p>private Singleton2() {<br />}</p>
		<p>//public static Singleton2 getInstance() {<br />//if (instance == null) {<br />//instance = new Singleton2();<br />//}<br />//<br />//return instance;<br />//}</p>
		<p>public static Singleton2 getInstance() {<br />synchronized(Singleton2.class) {<br />if (instance == null) {<br />instance = new Singleton2();<br />}<br />}</p>
		<p>return instance;<br />}<br />}</p>
		<p> </p>
		<p>//**********结构型模式**********</p>
		<p>//Adapter<br />//基本方法有两种,一种是使用引用一种使用继承<br />//将不符合标准的接口转成符合标准的接口,接口的修改主要是参数的增减,<br />//返回值类型,当然还有方法名<br />//感觉这就是封装的另一种表示形式,封装有用方法封装(在方法中调用功能方法),<br />//用类封装(先传入功能方法所在的类的对象,通过调用此对象的功能方法)</p>
		<p>//使用引用的形式<br />class Adapteea {<br />public void kk() {}<br />}</p>
		<p>interface Targeta {<br />String vv(int i, int k);<br />}</p>
		<p>class Adaptera implements Targeta{<br />Adapteea ade;</p>
		<p>public Adaptera(Adapteea ade) {<br />this.ade = ade;<br />}</p>
		<p>public String vv(int i, int k) {<br />//具体的业务方法实现在Adaptee中,这个方法<br />//只起到了接口转换的作用<br />//调用此方法是通过引用<br />ade.kk();<br />return null;<br />}<br />}</p>
		<p>//使用继承形式的<br />class Adapteeb {<br />public void kk() {}<br />}</p>
		<p>interface Targetb {<br />String vv(int i, int k);<br />}</p>
		<p>class Adapterb extends Adapteeb implements Targetb {<br />public String vv(int i, int k) {<br />//调用此方法是通过继承<br />kk();<br />return null;<br />}<br />}</p>
		<p>//Proxy<br />interface Subject {<br />void request();<br />} </p>
		<p>class realSubject implements Subject {<br />public void request() {<br />//do the real business<br />}<br />}</p>
		<p>class Proxy implements Subject {<br />Subject subject;</p>
		<p>public Proxy(Subject subject) {<br />this.subject = subject;<br />}</p>
		<p>public void request(){<br />System.out.println("do something");</p>
		<p>subject.request();</p>
		<p>System.out.println("do something");<br />}<br />}</p>
		<p>//Bridge<br />//感觉就是多态的实现</p>
		<p>interface Imp {<br />void operation();<br />}</p>
		<p>class Cimp1 implements Imp {<br />public void operation() {<br />System.out.println("1");<br />}<br />}</p>
		<p>class Cimp2 implements Imp {<br />public void operation() {<br />System.out.println("2");<br />}<br />}</p>
		<p>class Invoker {<br />Imp imp = new Cimp1();</p>
		<p>public void invoke() {<br />imp.operation();<br />}<br />}</p>
		<p>//Composite</p>
		<p>interface Component {<br />void operation();</p>
		<p>void add(Component component);</p>
		<p>void remove(Component component);<br />}</p>
		<p>class Leaf implements Component {<br />public void operation() {<br />System.out.println("an operation");<br />}</p>
		<p>public void add(Component component) {<br />throw new UnsupportedOperationException();<br />}</p>
		<p>public void remove(Component component) {<br />throw new UnsupportedOperationException();<br />}<br />}</p>
		<p>class Composite implements Component {<br />List components = new ArrayList();</p>
		<p>public void operation() {<br />Component component = null;</p>
		<p>Iterator it = components.iterator();<br />while (it.hasNext()) {<br />//不知道此component对象是leaf还是composite,<br />//如果是leaf则直接实现操作,如果是composite则继续递归调用<br />component = (Component) it.next();<br />component.operation();<br />}<br />}</p>
		<p>public void add(Component component) {<br />components.add(component);<br />}</p>
		<p>public void remove(Component component) {<br />components.remove(component);<br />}<br />}</p>
		<p>//Decorator<br />//对一个类的功能进行扩展时,我可以使用继承,但是不够灵活,所以选用了<br />//另外的一种形式,引用与继承都可活得对对象的一定的使用能力,而使用引用将更灵活<br />//我们要保证是对原功能的追加而不是修改,否则只能重写方法,或使用新的方法<br />//注意concrete的可以直接new出来,<br />//而decorator的则需要用一个另外的decorator对象才能生成对象<br />//使用对象封装,和公用接口<br />//Decorator链上可以有多个元素</p>
		<p>interface Componenta {<br />void operation();<br />}</p>
		<p>class ConcreteComponent implements Componenta {<br />public void operation() {<br />System.out.println("do something");<br />}<br />}</p>
		<p>class Decorator implements Componenta {<br />private Componenta component;</p>
		<p>public Decorator(Componenta component) {<br />this.component = component;<br />}</p>
		<p>public void operation() {<br />//do something before</p>
		<p>component.operation();</p>
		<p>//do something after<br />}<br />}</p>
		<p>//Facade<br />//非常实用的一种设计模式,我可以为外部提供感兴趣的接口</p>
		<p>class Obj1 {<br />public void ope1() {}<br />public void ope2() {}<br />}</p>
		<p>class Obj2 {<br />public void ope1() {}<br />public void ope2() {}<br />}</p>
		<p>class Facade {<br />//我得到了一个简洁清晰的接口<br />public void fdMethod() {<br />Obj1 obj1 = new Obj1();<br />Obj2 obj2 = new Obj2();</p>
		<p>obj1.ope1();<br />obj2.ope2();<br /> }<br />}</p>
		<p>//Flyweight<br />//空</p>
		<p>
				<br /> </p>
		<p>//**********行为型模式*************</p>
		<p>//Chain of Responsibility<br />//与Decorator的实现形式相类似,<br />//Decorator是在原来的方法之上进行添加功能,而<br />//Chain则是判断信号如果不是当前处理的则转交个下一个节点处理<br />//我可以使用if分支来实现相同的效果,但是不够灵活,链上的每个节点是可以替换增加的,相对<br />//比较灵活,我们可以设计接口实现对节点的增删操作,而实现更方便的效果<br />//这个是一个链状的结构,有没有想过使用环状结构</p>
		<p>interface Handler {<br />void handRequest(int signal);<br />}</p>
		<p>class CHandler1 implements Handler {<br />private Handler handler;</p>
		<p>public CHandler1(Handler handler) {<br />this.handler = handler;<br />}</p>
		<p>public void handRequest(int signal) {<br />if (signal == 1) {<br />System.out.println("handle signal 1");<br />}<br />else {<br />handler.handRequest(signal);<br />}<br />} <br />}</p>
		<p>class CHandler2 implements Handler {<br />private Handler handler;</p>
		<p>public CHandler2(Handler handler) {<br />this.handler = handler;<br />}</p>
		<p>public void handRequest(int signal) {<br />if (signal == 2) {<br />System.out.println("handle signal 2");<br />}<br />else {<br />handler.handRequest(signal);<br />}<br />} <br />}</p>
		<p>class CHandler3 implements Handler {<br />public void handRequest(int signal) {<br />if (signal == 3) {<br />System.out.println("handle signal 3");<br />}<br />else {<br />throw new Error("can't handle signal");<br />}<br />} <br />}</p>
		<p>class ChainClient {<br />public static void main(String[] args) {<br />Handler h3 = new CHandler3();<br />Handler h2 = new CHandler2(h3);<br />Handler h1 = new CHandler1(h2);</p>
		<p>h1.handRequest(2);<br />}<br />}</p>
		<p>//Interpreter<br />//感觉跟Composite很类似,只不过他分文终结符和非终结符</p>
		<p>//Template Method</p>
		<p>abstract class TemplateMethod {<br />abstract void amd1();</p>
		<p>abstract void amd2();</p>
		<p>//此方法为一个Template Method方法<br />public void tmd() {<br />amd1();<br />amd2();<br />}<br />}</p>
		<p>//State</p>
		<p>//标准型<br />//状态和操作不应该耦合在一起<br />class Contexta {<br />private State st;</p>
		<p>public Contexta(int nst) {<br />changeStfromNum(nst);<br />}</p>
		<p>public void changeStfromNum(int nst) {<br />if (nst == 1) {<br />st = new CStatea1();<br />}<br />else if (nst == 2) {<br />st = new CStatea2();<br />}</p>
		<p>throw new Error("bad state");<br />}</p>
		<p>void request() {<br />st.handle(this);<br />}<br />}</p>
		<p>interface State {<br />void handle(Contexta context);<br />}</p>
		<p>class CStatea1 implements State {<br />public void handle(Contexta context) {<br />System.out.println("state 1");<br />//也许在一个状态的处理过程中要改变状态,例如打开之后立即关闭这种效果<br />//context.changeStfromNum(2);<br />}<br />}</p>
		<p>class CStatea2 implements State {<br />public void handle(Contexta context) {<br />System.out.println("state 2");<br />}<br />}</p>
		<p>//工厂型<br />//根据状态不通生成不同的state</p>
		<p>//class StateFactory {<br />//public static State getStateInstance(int num) {<br />//State st = null;<br />//<br />//if (num == 1) {<br />//st = new CStatea1();<br />//}<br />//else if (num == 2) {<br />//st = new CStatea2();<br />//}<br />//<br />//return st;<br />//}<br />//}</p>
		<p>//Strategy<br />//跟Bridge相类似,就是一种多态的表示</p>
		<p>//Visitor<br />//双向引用,使用另外的一个类调用自己的方法,访问自己的数据结构<br />interface Visitor {<br />void visitElement(Elementd element);<br />}</p>
		<p>class CVisitor implements Visitor {<br />public void visitElement(Elementd element) {<br />element.operation();<br />}<br />}</p>
		<p>interface Elementd {<br />void accept(Visitor visitor);</p>
		<p>void operation();<br />}</p>
		<p>class CElementd implements Elementd {<br />public void accept(Visitor visitor) {<br />visitor.visitElement(this);<br />}</p>
		<p>public void operation() {<br />//实际的操作在这里<br />}<br />}</p>
		<p>class Clientd {<br />public static void main() {<br />Elementd elm = new CElementd();<br />Visitor vis = new CVisitor();</p>
		<p>vis.visitElement(elm);<br />}<br />}</p>
		<p>//Iteraotr<br />//使用迭代器对一个类的数据结构进行顺序迭代</p>
		<p>interface Structure {<br />interface Iteratora {<br />void first();</p>
		<p>boolean hasElement();</p>
		<p>Object next();</p>
		<p>}<br />}</p>
		<p>class Structure1 implements Structure {<br />Object[] objs = new Object[100];</p>
		<p>//使用内部类是为了对Struture1的数据结构有完全的访问权<br />class Iteratora1 implements Iteratora {<br />int index = 0;</p>
		<p>public void first() {<br />index = 0;<br />}</p>
		<p>public boolean hasElement() {<br />return index &lt; 100;<br />} </p>
		<p>public Object next() {<br />Object obj = null;</p>
		<p>if (hasElement()) {<br />obj = objs[index];<br />index++;<br />}</p>
		<p>return obj;<br />}<br />}<br />}</p>
		<p>//Meditor</p>
		<p>class A1 {<br />public void operation1() {}<br />public void operation2() {}<br />}</p>
		<p>class A2 {<br />public void operation1() {}<br />public void operation2() {}<br />}</p>
		<p>class Mediator {<br />A1 a1;<br />A2 a2;</p>
		<p>public Mediator(A1 a1, A2 a2) {<br />this.a1 = a1;<br />this.a2 = a2;</p>
		<p>}</p>
		<p>//如果我想实现这个功能我可能会把他放在A1中<br />//但是这样耦合大,我不想在A1中出现A2对象的引用,<br />//所以我使用了Mediator作为中介<br />public void mmed1() {<br />a1.operation1();<br />a2.operation2();<br />}</p>
		<p>public void mmed2() {<br />a2.operation1();<br />a1.operation2();<br />}<br />}</p>
		<p>//Command<br />//我认为就是将方法转换成了类</p>
		<p>class Receiver {<br />public void action1() {}</p>
		<p>public void action2() {}<br />}</p>
		<p>interface Command {<br />void Execute();<br />}</p>
		<p>class CCommand1 implements Command {<br />private Receiver receiver;</p>
		<p>public CCommand1(Receiver receiver) {<br />this.receiver = receiver;<br />}</p>
		<p>public void Execute() {<br />receiver.action1();<br />}<br />}</p>
		<p>class CCommand2 implements Command {<br />private Receiver receiver;</p>
		<p>public CCommand2(Receiver receiver) {<br />this.receiver = receiver;<br />}</p>
		<p>public void Execute() {<br />receiver.action2();<br />}<br />}</p>
		<p>//Observer<br />//在这里看似乎这个模式没有什么用<br />//但是如果我有一个线程监控Subject,如果Subject的状态<br />//发生了变化,则更改Observer的状态,并出发一些操作,这样就有实际的意义了<br />//Observer与Visitor有相似的地方,都存在双向引用<br />//Subject可以注册很多Observer</p>
		<p>interface Subjectb {<br />void attach(Observer observer);</p>
		<p>void detach(Observer observer);</p>
		<p>void mynotify();</p>
		<p>int getState();</p>
		<p>void setState(int state);<br />}</p>
		<p>class Subjectb1 implements Subjectb {<br />List observers = new ArrayList();<br />int state;</p>
		<p>public void attach(Observer observer) {<br />observers.add(observer);<br />}</p>
		<p>public void detach(Observer observer) {<br />observers.remove(observer);<br />}</p>
		<p>public void mynotify() {<br />Observer observer = null;<br />Iterator it = observers.iterator();</p>
		<p>while (it.hasNext()) {<br />observer = (Observer) it.next();<br />observer.Update();<br />}<br />}</p>
		<p>public int getState() {<br />return state;<br />}</p>
		<p>public void setState(int state) {<br />this.state = state;<br />}<br />}</p>
		<p>interface Observer {<br />void Update();<br />}</p>
		<p>class Observer1 implements Observer {<br />Subjectb subject;<br />int state;</p>
		<p>public Observer1(Subjectb subject) {<br />this.subject = subject;<br />}</p>
		<p>public void Update() {<br />this.state = subject.getState();<br />}</p>
		<p>public void operation() {<br />//一些基于state的操作<br />}<br />}</p>
		<p>//Memento<br />//感觉此模式没有什么大用</p>
		<p>class Memento {<br />int state;</p>
		<p>public int getState() {<br />return state;<br />}</p>
		<p>public void setState(int state) {<br />this.state = state;<br />}<br />}</p>
		<p>class Originator {<br />int state;</p>
		<p>public void setMemento(Memento memento) {<br />state = memento.getState();<br />}</p>
		<p>public Memento createMemento() {<br />Memento memento = new Memento();<br />memento.setState(1);<br />return memento;<br />}</p>
		<p>public int getState() {<br />return state;<br />}</p>
		<p>public void setState(int state) {<br />this.state = state;<br />}<br />}</p>
		<p>class careTaker {<br />Memento memento;</p>
		<p>public void saverMemento(Memento memento) {<br />this.memento = memento;<br />}</p>
		<p>public Memento retrieveMemento() {<br />return memento;<br />}<br />}</p>
		<p>//程序最终还是顺序执行的,是由不通部分的操作拼接起来的<br />//将不同类的代码拼接起来是通过引用实现的,有了引用我就<br />//相当于有了一定访问数据结构和方法的能力,这与写在类内部<br />//差不多,例如我想将一个类中的一个方法抽离出去,因为这个方法依赖与此类的数据和其他方法<br />//直接将代码移走是不行的,但如果我们拥有了此类对象的引用,则与写在此类<br />//内部无异,所以我们拥有了引用就可以将此方法移出<br />public class Pattern {<br />public static void main(String[] args) {<br />}<br />}</p>
		<p> </p>
<img src ="http://www.blogjava.net/toby/aggbug/329196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-08-18 11:31 <a href="http://www.blogjava.net/toby/archive/2010/08/18/329196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 23种模式概述</title><link>http://www.blogjava.net/toby/archive/2010/08/18/329186.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 18 Aug 2010 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/08/18/329186.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/329186.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/08/18/329186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/329186.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/329186.html</trackback:ping><description><![CDATA[
		<font face="微软雅黑" color="#235b96" size="4">
				<div class="articalContent" id="sina_keyword_ad_area2">常见23种模式概述：<br />1） 抽象工厂模式（Abstract Factory）：提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。<br />2） 适配器模式（Adapter）：将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。<br />3） 桥梁模式（Bridge）：将抽象部分与它的实现部分分离，使它们都可以独立地变化。<br />4） 建造模式（Builder）：将一个复杂对 象的构建与它的表示分离，使同样的构建过程可以创建不同的表示。<br />5） 责任链模式（Chain of Responsibility）：为解除请求的发送者和接收者之间耦合，而使多个对象都有机会处理这个请求。将这些对象连成一条链，并沿着这条链传递该请求，直到有一个对象处理它。<br />6） 命令模式（Command）：将一个请求封装为一个对象，从而可用不同的请求对客户进行参数化；对请求排队或记录请求日志，以及支持可取消的操作。<br />7） 合成模式（Composite）：将对象组合成树形结构以表示“部分－整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。<br />8） 装饰模式（Decorator）：动态地给一个对象添加一些额外的职责。就扩展功能而言，它能生成 子类的方式更为灵活。<br />9） 门面模式（Facade）：为子系统中的一组接口提供一个一致的界面，门面模式定义了一个高层接口，这个接口使得这一子系统更加容易使用。<br />10） 工厂方法（Factory Method）：定义一个用于创建对象的接口，让子类决定将哪一个类实例化。 Factory Method 使一个类的实例化延迟到其子类。<br />11） 享元模式（Flyweight）：运用共享技术以有效地支持大量细粒度的对象。<br />12） 解释器模式（Interpreter）：给定一个语言，定义它的语法的一种表示，并定义一个解释器，该解释器使用该表示解释语言中的句子。<br />13） 迭代子模式（Iterator）：提供一种方法顺序访问一个聚合对象中的各个元素，而又不需暴露该对象的内部表示。<br />14） 调停者模式（Mediator）：用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的内部表示。<br />15） 备忘录模式（Memento）：在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。<br />16） 观察者模式（Observer）：定义对象间的一种一对多的依赖关系，以便当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并自动刷新。<br />17） 原始模型模式（Prototype）：用原型实例指定创建对象的种类，并且通过拷贝这个原型创建新的对象。<br />18） 代理模式（Proxy）：为其他对象提供一个代理以控制对这个对象的访问。<br />19） 单例模式（Singleton）：保证一个类仅有一个 实例，并提供一个访问它的全局访问点。<br />20） 状态模式（State）：允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修 改了它所属的类。<br />21） 策略模式（Strategy）：定义一系列的算法，把它们一个个封装起来，并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。<br />22） 模板模式（Template Method）：定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。<br />23） 访问者模式（Visitor）：表示一个作用于某对象结构中的各元素的操作。该模式可以实现在不改变各元素的类的前提下定义作用于这些元素的新操作。</div>
		</font>
<img src ="http://www.blogjava.net/toby/aggbug/329186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-08-18 10:46 <a href="http://www.blogjava.net/toby/archive/2010/08/18/329186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>改变PowerDesigner数据模型字体大小</title><link>http://www.blogjava.net/toby/archive/2009/08/05/290004.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 05 Aug 2009 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2009/08/05/290004.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/290004.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2009/08/05/290004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/290004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/290004.html</trackback:ping><description><![CDATA[一。改变左侧菜单字体大小<br />Tools-----&gt;General-------&gt;Fonts--------&gt;根据item选项的不同改变字体的大小<br /><br />二。改变数据模型Table的字体大小<br />Tools------&gt;Display  Prefrences------&gt;Format-------&gt;Table---------&gt;Modify-------&gt;Font--------&gt;根据Symbol选项不同改变字体的大小<img src ="http://www.blogjava.net/toby/aggbug/290004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2009-08-05 22:47 <a href="http://www.blogjava.net/toby/archive/2009/08/05/290004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML软件开发过程</title><link>http://www.blogjava.net/toby/archive/2009/07/01/285039.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 01 Jul 2009 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2009/07/01/285039.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/285039.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2009/07/01/285039.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/285039.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/285039.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一.概述                    																		软件开发过程(software development process)描述了构造、部署以及维护软件的方式。统一过程[JBR99]已经成为一种流行的构造面向对象系统的迭代软件开发过程。特别是Rational统一过程是对统一过程的详细精化，并且已经被广泛采纳。																		迭代开发是软件...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2009/07/01/285039.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/285039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2009-07-01 23:09 <a href="http://www.blogjava.net/toby/archive/2009/07/01/285039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational　Rose2003破解安装详解</title><link>http://www.blogjava.net/toby/archive/2009/04/25/267519.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Sat, 25 Apr 2009 13:43:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2009/04/25/267519.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/267519.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2009/04/25/267519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/267519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/267519.html</trackback:ping><description><![CDATA[
		<div class="lh3" id="veryContent" style="OVERFLOW: hidden; WIDTH: 100%">
				<table class="contentTable" id="blogContentTable" cellspacing="0" cellpadding="0">
						<tbody>
								<tr>
										<td style="WORD-WRAP: break-word" valign="top">
												<div id="blogContainer" style="FONT-SIZE: 16px">
														<img id="paperPicArea0" style="DISPLAY: none" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" />
														<div id="paperTitleArea" style="DISPLAY: none" align="center">
																<span id="paperTitle" style="DISPLAY: block; FONT-WEIGHT: bolder; WORD-BREAK: break-all">
																		<font face="" color="#000e04">Rational　Rose2003破解安装详解</font>
																</span>
														</div>
														<img id="paperPicArea" style="DISPLAY: none" src="http://imgcache.qq.com/ac/qzone_v4/b.gif" />
														<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">Rational Rose 2003下载地址：</font>
														<wbr style="LINE-HEIGHT: 1.3em">
																<a href="http://www.21php.com/Rational%20Rose%202003.rar" target="_blank">
																		<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">http://www.21php.com/Rational Rose 2003.rar</font>
																		<wbr style="LINE-HEIGHT: 1.3em">
																		</wbr>
																</a>
																<wbr>
																		<br />
																		<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">破解文件的下载地址：</font>
																		<wbr style="LINE-HEIGHT: 1.3em">
																				<a href="http://www.cnblogs.com/Files/lixianhuei/rose2003crack.rar" target="_blank">
																						<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">http://www.cnblogs.com/Files/lixianhuei/rose2003crack.rar</font>
																						<wbr style="LINE-HEIGHT: 1.3em">
																						</wbr>
																				</a>
																				<wbr>
																						<br />
																						<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">1.安装Rational Rose2003时，在需选择安装项的时候，只选择Rational Rose EnterPrise Edition即可，不需选择其他项。</font>
																						<wbr style="LINE-HEIGHT: 1.3em">
																								<br />
																								<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">2.安装好Rational Rose Enterprise Editon后，打开rose2003crack.rar压缩包，里面有四个文件，分别为flexlm.cpl、license.dat、lmgrd.exe、rational.exe。</font>
																								<wbr style="LINE-HEIGHT: 1.3em">
																										<br />
																										<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">3.用记事本或者是EditPlus打开license.dat文件，大约在文件的中间位置有：SERVER Microsoft ANY<br />DAEMON rational “C:\Program Files\Rational\common\rational.exe”，将其修改为：SERVER 计算机名 ANY DAEMON rational “自己安装的目录\rational.exe”后，保存</font>
																										<wbr style="LINE-HEIGHT: 1.3em">
																												<br />
																												<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">注：若是按默认目录安装，则只需修改计算机名即可。</font>
																												<wbr style="LINE-HEIGHT: 1.3em">
																														<br />
																														<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">4.将license.dat、 lmgrd.exe 、rational.exe三个文件一起拷贝到：安装目录\rational\common\下面。</font>
																														<wbr style="LINE-HEIGHT: 1.3em">
																																<br />
																																<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">注：若为默认则为：C:\Program Files\Rational\common\目录。</font>
																																<wbr style="LINE-HEIGHT: 1.3em">
																																		<br />
																																		<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">5.将flexlm.cpl拷贝到system32目录下。如win2000系统中为C:\WINNT\system32目录。</font>
																																		<wbr style="LINE-HEIGHT: 1.3em">
																																				<br />
																																				<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">6.进入控制面板，则在控制面板的上方会增加了一个图标，即FLEXlm License Manager，将其打开，在Setup页中lmgrd.exe右侧目录写为：C:\Program Files\Rational\Common\lmgrd.exe（若为默认安装目录）<br />License File右侧目录写为：C:\Program Files\Rational\Common\license.dat</font>
																																				<wbr style="LINE-HEIGHT: 1.3em">
																																						<br />
																																						<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">7.回到Control页，点击Start，若出现”Server Started”，则表示已经成功，可以点击Status,若状态为：计算机名：license server UP(MASTER)则成功。</font>
																																						<wbr style="LINE-HEIGHT: 1.3em">
																																								<br />
																																								<font style="FONT-SIZE: medium; LINE-HEIGHT: 1.3em">8.这时可打开安装的Rational Rose Enterprise Edition，若还是出现Error，则打开Rational License Key Administrator ，点击工具栏中的第一个工具（Start WIzard）,点击下一步，在Server Name中的名字改为自己的计算机名即可。</font>
																																						</wbr>
																																				</wbr>
																																		</wbr>
																																</wbr>
																														</wbr>
																												</wbr>
																										</wbr>
																								</wbr>
																						</wbr>
																				</wbr>
																		</wbr>
																</wbr>
														</wbr>
												</div>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/toby/aggbug/267519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2009-04-25 21:43 <a href="http://www.blogjava.net/toby/archive/2009/04/25/267519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>