1 / 221
文档名称:

软件设计模式.ppt

格式:ppt   大小:2,593KB   页数:221页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式.ppt

上传人:相惜 2022/3/10 文件大小:2.53 MB

下载得到文件列表

软件设计模式.ppt

相关文档

文档介绍

文档介绍:1、工厂方法模式
程序:奚亮亮 ppt :叶良波 答问:陈才国
1页
FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务y的意图是这
样描述的:为了创建一组相关或相互依赖的对象提供
一个接口,而且无需指定它们的具体类。
有时候,几个对象需要一种协调的方式实例化。例如
,在处理用户界面时,系统可能在一个操作系统上用
一组对象,在另一个系统上用另一组对象。Abstract Factory 确保系统根据情况获得正确的对象。
编辑课件
产品族
产品族,是指位于不同产品等级结构中,功
能相关联的产品组成的家族。比如下图中,箭
头所指就是三个功能相关联的产品。它们位于
三个不同的等级结构中的相同位置上,组成了
一个产品族。
编辑课件
为什么需要AF
编辑课件
为什么需要AF
如果,现在有三个相似的工厂等级结构,那么采
用工厂方法模式就势必要使用三个独立的工厂等级
结构。由于三个等级结构相似性,会导致三个平行
的等级结构。随着产品等级结构的数目增加,工厂
方法模式所给出的工厂等级结构的数目也会增加。
编辑课件
抽象工厂模式结构图
编辑课件
结构与角色
抽象工厂 (AbstractFactory)角色:
担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用JAVA接口或者抽象JAVA类来实现,而所有的具体工厂类必须实现该接口或者继承抽象类。
具体工厂类 (Conrete Factory)角色:
这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑。通常使用具体类来实现这个角色。
抽象产品(Abstract Product)角色:
担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。通常使用接口或者抽象类来实现这一角色。
具体产品(Concrete Product)角色:
抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。通常使用具体JAVA类来实现。
编辑课件
抽象工厂模式时序图
在客户新建一个抽象工厂的时候,其实是新建了一个具体的工厂,然后再通过
该具体工厂来创建各种具体的产品。
编辑课件
抽象工厂模式优缺点
优点:
程序设计中有三种耦合:零耦合、抽象耦合、具体耦合。抽象工厂设计可以很好的把具体耦合转换到抽象耦合来减少耦合程度。
具体产品从客户代码中被分离出来。
容易改变产品的系列。
将一个系列的产品族统一到一起创建。
编辑课件
抽象工厂模式优缺点
缺点:
由于每个类的产生都要继承抽象类(或接口),并由工厂来创建,这样就增加了代码长度和工作量。
在产品族中扩展新的产品是很困难的,它需要修改抽象工厂的接口。
使软件结构更复杂。
编辑课件
与其他模式的区别和联系
与工厂模式的区别:
工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的推广。
工厂方法模式用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类。
编辑课件
总结
工厂的实现通常使用Singleton模式。一个应用中一般每个系列产品只需要使用一个具体工厂的实例。
抽象工厂模式提供了一个创建一系列相关或相互依赖的对象的接口,关键点在于应对”多系列对象创建”的需求变化。
学会抽象工厂模式,可以更好地理解面向对象中的原则:
面向接口编程,而不要面向实现编程。
编辑课件
组员:汤仲喆 王凯 李义冬
主讲:汤仲喆
代码:王凯
答辩:李义冬
4、The Singleton Pattern (单例模式)
1页
SINGLETON—俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道"老公",都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事) 单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的"单一实例"的需求时才可使用。
编辑课件
什么是单例模式
顾名思义,单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的要点
(1)某个类只能有一个实例;
(2)它必须自行创建这个实例;
(3)它必须自行向整个系统提供这个实例。
解决方案---单例模式
编辑课件
意图:希望类只有一个实例,但没有控制类实例化的全局变量(对象