标题: [原创]设计模式研究
threehair
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14


UID 27
精华 78
积分 3034
帖子 5716
活跃指数 0
LU金币 2093 个
LU金条 0 个
阅读权限 200
注册 2003-9-17
 
发表于 2003-11-10 18:11  资料  个人空间  短消息  加为好友 
QUOTE(cheyenne @ 2003-11-10 18:10:20)
还是咱们三毛姐姐好啊 !!!

wub.gif

8客气拉 icon_redface.gif
你不会又是一个晚上没睡吧? unsure.gif





╭⌒╮ ╭⌒╮╭⌒╮
╱◥███◣╭╭ ⌒╮
︱田︱田   田|
关门,上锁,钥匙已生锈。
世事静方见,人情淡始长!
顶部
Bell
LU天使
Rank: 4
三军总司令



UID 1782
精华 9
积分 699
帖子 1361
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 50
注册 2003-11-6
来自 MIT
 
发表于 2003-11-10 22:46  资料  个人空间  主页 短消息  加为好友 
哈哈,我一般上午睡觉,晚上工作。谢谢姐姐关心啊!

rose.gif





Ensemble à tout jamais!
user posted imageuser posted image
顶部
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2003-11-11 00:21  资料  个人空间  主页 短消息  加为好友 
上面写到接口与继承
下面讲讲继承与组合还有参数化类

继承与组合是两种策略

都是为了代码的复用

但是两个方法复用的方式不一样,继承是通过产生子类进行复用
这时子类必然知道父类的实现,因此叫“白箱复用”
由于知道父类实现,因此破坏了父类的封装性。

组合是通过定义成员函数进行复用,类只能通过组合的类定义的接口进行访问
而不可以访问它的protected部分,也不必(不能)知道它的实现。所以叫“黑箱复用"

组合就是使用已有的类来实现一个功能。
继承就是对某个类进行细化,它可以选择对某个行为进行细化

原则是下面:(抄书上的)
优先使用组合而非继承
在继承中,改变父类的实现,就会影响对应的子类接口的实现,所以在修改时不是很方便
,但是组合因为只对接口进行调用,修改时不会影响什么子类,只会影响调用这个接口的地方,改动比较方便


委拖是组合的一个特例,就是一个对象把接收到的请求交给另一个对象进行处理。



参数化类,参数化类使用的技术是模板(在C++中,STL的容器就是一个典型例子)就是把某些结果只与类型相关,而与过程无关的东西放在一起。如
a=a+b , 如果定义了两个类,Intger Float,
struct Int{
int i;
};
struct Float{
int i;
};

这时要定义这两个类的Add,如果使用普通方法的话需要写两份代码,一份是
Int Add(const Int&a, const Int& B){
Int c;
c.i = a.i+b.i;
return c;
}

同样还要定义一个参数是Float类型的同样代码的函数,是不是觉得有点累,而且以后还要维护两套同样的代码(如果BOSS是靠代码行类计算的话
那可以放心这样写)
使用模板就不必这么麻烦了。你可以定义如下
template <class T>
T Add(const T&a,const T&b)
{
T c;
c.i=a.i|b.i;
return c;
}
OK


三种方法比较
从代码编写上来说,继承是最快的,如果你不想实现某个类的所有接口,那只要从它继承就可以了。但是破坏了封状性,修改父类就会影响子类,维护性不是很好。并且是编译时就指定,无法运行时改变功能。(如if
a then b这样)
组合是使用一组对象来实现一个功能。性能方面比不上继承,但是修改一个类不会影响其它类,另外可以运行时指定(你可以在运行时指定由哪个对象来处理)。另外由于需要运行时才指定对象,所以有低效性问题(如果想完全高效那当然是使用C或是ASM了
所以这方面不用担心)
参数化类型(也就是模板)是定义一组除了类型外其它没有什么不同的操作的好方法,无论是维护还是开发上都不错。





不要问我结果 我只研究过程与思路
无双客栈
顶部
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2003-11-12 01:26  资料  个人空间  主页 短消息  加为好友 
23个模式说明

在这里将会大概的说明一下23个模式
后面会对每一个模式进行详细的介绍

在这里可能会有写错的 欢迎大家指正

Abstract Factory抽象工厂
向客户提供一个接口 让客户在不必指定产品的具体类型的情况下, 创建多个产品族中的产品对象。
因为这些产品族是一起工作的,所以使用抽象工厂更方便,在书中举的例子是有门、房间、墙的党宫组件

Adapter适配器 把一个类的接口转换成用户希望的另一个接口,最简单的联想是和重命名类似的东东。
Bridge 桥接 ,把抽象部分与实现部分分离,使他们可以独立的变化。实现部分提供接口供抽象部分调用。bridge是使用组合而不是继承的体现。这里转了一篇文章,可以对照着理解。

builder 生成器





不要问我结果 我只研究过程与思路
无双客栈
顶部
大菠萝
LU新生
Rank: 1



UID 2247
精华 0
积分 6
帖子 12
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-12
 
发表于 2003-11-12 10:41  资料  个人空间  短消息  加为好友  添加 大菠萝 为MSN好友 通过MSN和 大菠萝 交谈 ICQ 状态
这个是抽象工厂的UML图,是rose帮助里的,呵呵



 附件: 您所在的用户组无法下载或查看附件
顶部
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2003-11-12 10:45  资料  个人空间  主页 短消息  加为好友 
写得很详细
大菠萝兄你在哪里找到的

我什么没看到呢





不要问我结果 我只研究过程与思路
无双客栈
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
大菠萝
LU新生
Rank: 1



UID 2247
精华 0
积分 6
帖子 12
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-12
 
发表于 2003-11-12 10:53  资料  个人空间  短消息  加为好友  添加 大菠萝 为MSN好友 通过MSN和 大菠萝 交谈 ICQ 状态
在我的C:\Program Files\Rational\Rose\designpattern中

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2003-11-12 11:01  资料  个人空间  主页 短消息  加为好友 
找到了smile.gif





不要问我结果 我只研究过程与思路
无双客栈
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
大菠萝
LU新生
Rank: 1



UID 2247
精华 0
积分 6
帖子 12
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-12
 
发表于 2003-11-12 11:07  资料  个人空间  短消息  加为好友  添加 大菠萝 为MSN好友 通过MSN和 大菠萝 交谈 ICQ 状态
强烈建议无双按照图来讲,随便还可以讲讲UML的图示含义,一举两得

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2003-11-12 11:13  资料  个人空间  主页 短消息  加为好友 
我是先想写个大概介绍
后面再写每个模式的具体内容与实现

写到模式具体内容时会开每个模式开一个新贴的





不要问我结果 我只研究过程与思路
无双客栈
顶部
qinxj
技术专家
Rank: 14Rank: 14Rank: 14Rank: 14



UID 1117
精华 1
积分 166
帖子 328
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-10-29
 
发表于 2003-11-12 13:42  资料  个人空间  短消息  加为好友  添加 qinxj 为MSN好友 通过MSN和 qinxj 交谈
严重同意,无双兄来开头,我们就来和一和!





合久必分、分久必和!
顶部
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2003-11-12 13:57  资料  个人空间  主页 短消息  加为好友 
好啊
现在开始看

我想总会有很多不足的地方
后面再继续进行补充与讨论

一起学习





不要问我结果 我只研究过程与思路
无双客栈
顶部
 



当前时区 GMT+8, 现在时间是 2008-10-14 04:46
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.056581 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver