Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2677|回复: 2
打印 上一主题 下一主题

23种设计模式

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-7-2 11:20:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
创建型模式 (5)1.Abstract Factory(抽象工厂)
2.Builder(生成器)
3.Factory Method(工厂方法)
4.Prototype(原型)
5.Singleton(单件)

结构型模式 (7)

6.Adapter(适配器)
7.Bridge(桥接)
8.Composete(组成)
9.Decorator(装饰)
10.Facade(外观)
11.FlyWeight(享元)
12.Proxy(代理)

行为模式

13.Chain Of Responsibility(职责链)
14.Command(命令)
15.Interpreter(解析器)
16.Iterator(迭代器)
17.Mediator(中介者)
18.Memento(备忘录)
19.Observer(观察者)
20.State(状态)
21.Strategy(策略)
22.Template Method(模板方法)
23.Vistor(访问者)

回复

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
沙发
 楼主| 发表于 2016-7-2 14:18:20 | 只看该作者
本帖最后由 jimu 于 2016-7-2 18:15 编辑

OMT是Object Modeling Technology的缩写, 意为对象建模技术.
它从三个方面对系统进行建模,每个模型从一个侧面反映系统的特性,三个模型分别是:对象模型、动态模型和功能模型。
OMT方法的OOA(Object-Oriented Analysis(面向对象分析方法))模型包括对象模型,动态模型和功能模型

类:描述成一个矩形,其中的类名以黑体表示;操作在类名下面,以常规字体表示。类所定义的任何数据都在操作的下面。类名与操作之间以及操作与数据之间用横线分割。


实例化: 对象通过实例化类来创建,此对象被称为该类的实例。
下图中的虚箭头表示一个类实例化另一个类的对象,箭头指向被实例化的对象的类。


类继承:


抽象类:主要目的是为它的子类定义公共接口。一具抽象类将把它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能被实例化。在抽象类中定义却没有实现的操作被称为抽象操作。
非抽象类称为具体 类(concrete class).
抽象类的类名以斜体表示,以与具体类相区别。抽象操作也用斜体表示。图中可以包括实现操作的伪代码,如果这样,则代码将出现在带有揩角的框中,并用虚线将该揩角框与代码所实现的操作相连。


类继承与接口继承的比较
理解对象的类(class)与对象的类型(type)之间的差别是非常重要。
一个对象的类定义了对象是怎样实现的,同时也定义了对象的内部状态和操作的实现。
但是对象的类型只是与它的接口有关,接口即对象能响应的请求的集合。一个对象可以有多个类型,不现类的对象可以有相同的类型。

理解类继承和接口继承(或子类型化)之间的差别是十分重要的。类继承根据一个对象的实现定义另一个对象的实现。简而言之,它是代码和表示的共享机制。
然而,接口继承(或子类型化)描述了一个对象什么时候能被用来替代另一个对象。


运用复用机制
1.继承和组合的比较
优先使用对象组合,而不是类继承。

2.委托(delegation)
是一种组合方法,它使组合具有与继承同样的复用能力。在委托方式下,有两个对象参与处理一个请求,接受请求的对象将操作委托给它的代理者(delegate)。
这类似于子类将请求交给它的父类处理。使用继承时,被继承的操作总能引用接受请求的对象,C++中通过this成员变量。委托方式为了得到同样的效果,
接受请求的对象将自己传给被委托者(代理人),使被委托的操作可以引用接受请求的对象


3.继承和参数化类型的比较
回复 支持 反对

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
板凳
 楼主| 发表于 2016-7-2 14:46:51 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-22 17:08 , Processed in 0.073629 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表