设计模式复习重点之八大模式

上传人:大米 文档编号:546420963 上传时间:2022-08-12 格式:DOCX 页数:7 大小:189.71KB
返回 下载 相关 举报
设计模式复习重点之八大模式_第1页
第1页 / 共7页
设计模式复习重点之八大模式_第2页
第2页 / 共7页
设计模式复习重点之八大模式_第3页
第3页 / 共7页
设计模式复习重点之八大模式_第4页
第4页 / 共7页
设计模式复习重点之八大模式_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《设计模式复习重点之八大模式》由会员分享,可在线阅读,更多相关《设计模式复习重点之八大模式(7页珍藏版)》请在金锄头文库上搜索。

1、工厂方法模式(虚拟构造器模式多态工厂模式)女娲照人(黑白黄三类)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 父类负责定义创建对象的公共接口,而子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟 到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。工厂方盍(刊croryMB油m灯 丙构阳参与者:工厂角色(Creator) 声明工厂方法,返回一个产品。真实的工厂(Concrete Creator) 实现工厂方法,由客户调用,返回一个产品的实例。 产品角色(Product)*定义产品的接口。真实的产品(Concrete Product

2、)*实现接口产品角色的类。优占:1,基于工厂角色和产品角色的多态性设计。所有具体工厂类都具有同一抽象父类。2在系统中加入新产品时,无需修改抽象工厂和抽象产品提供的接口及客户端,只需添加具体工厂和具体 产品。 3 工厂方法模式是典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不用关心, 符合迪米特法则,也符合依赖倒置原则,也符合里氏替换原则。缺点:添加新产品时,需编写新的具体产品类,还要提供与之对应的具体工厂类。适田性:类不知道自己要创建哪一个对象 类用它的子类来指定创建哪个对象 客户需要清楚创建了哪一个对象案例一:设计一个连接邮件服务器的框架,有三种网络协议可供选择:POP3,

3、IMAP,HTTP,我们就可以 把这三种连接方法作为产品类。定义一个接口如IConnectMail,然后定义对邮件的操作方法,用不同的方 法实现三个具体的产品类(也就是连接方式),再定义一个工厂方法,按照不同的传入条件,选择不同的连接方式。案例二:异构项目中,通过WebService与一个非Java的项目交互,虽然WebService号称是可以做到异构 系统的同构化,但是在实际的开发中,还是会碰到很多问题,如类型问题, WSDL 文件的支持问题等等。可以从WSDL中产生的对象都认为是一个产品,然后由一个具体的工厂类进行管理,减少与外围系统的耦 合。案例三:在数据库开发中,连接数据库,数据库从M

4、ySQL切换到Oracle,需要改动的地方就是切换一下驱 动名称,其他的都不需要修改。抽象工厂模式(kit模式) 女娲造人忘记给人类定义了性别,那怎么办?抹掉重来,从头开始建立所有事物,使用的物品和设备还是 原来的黄土和八卦炉,但是现在需要在不同的人种之中加入性别,于是把八卦炉一份为二,分为女性八卦 炉和男性八卦炉。定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。工厂1、提供一系列相互依赖对象的创建工作2、封装对象常规的创建方法(new)(变化点在“对象创建”,因此就封装“对象创建”。面向接口编程 依赖接口,而非依赖实现)3、提供统一调用数据访问方法的方式4、避免调

5、用数据访问方法和具体对象创建工作的紧耦合 提供一个创建一系列相关或相互依赖对象的接口,无需指定它们具体的类抽象工厂设计模式中各个对象的主要功能、职责:1、用抽象工厂生产抽象产品2、用实体工厂生产实体产品3、用抽象产品提供实体产品访问接口4、用实体产品实现自己的功能参与者:物抽象工厂(Abstract Factory)够 声明生成抽象产品的方法。物具体工厂(Concrete Factory)够 执行生成抽象产品的方法,生成一个具体的产品。物抽象产品(Abstract Product)够为一种产品声明接口。具体产品(Product)够定义具体工厂生成的具体产品的对象,实现产品接口。 物客户(Cli

6、ent)够我们的应用程序,使用抽象产品和抽象工厂生成对象优占:1隔离了具体类的生成,使得客户不需要知道什么被创建了。2当一个产品族中的多个对象被设计 成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。3符合开放封闭原则缺点:添加新的产品对象时,难以扩展抽象工厂以便生产新种类的产品。适田性.系统需要屏蔽有关对象如何创建,如何组织和如何表示系统需要由关联的对象来构成有关联的多个对象需要一起应用并且它们的约束是强迫的(不可分离) 你想提供一组对象而不显示它们的实现过程,只显示它们的接口案例一:一个文本编辑器和一个图片处理器,都是软件实体,但是*nix下的文本编辑器和Windows下的文

7、本编辑器虽然功能和界面都相同,但是代码实现是不同的,图片处理器也有类似情况。也就是具有了相同 的约束条件:操作系统类型。于是我们可以使用抽象工厂模式,产生不同操作系统下的编辑器和图片处理器。案例二:一个应用,需要在三个不同平台(Windows、*nix、Android)上运行,你会怎么设计?分别设 计三套不同的应用?非也,通过抽象工厂模式屏蔽掉操作系统对应用的影响。三个不同操作系统上的软件 功能、应用逻辑、 UI 都应该是非常类似的,唯一不同的是调用不同的工厂方法,由不同的产品类去处理与 操作系统交互的信息。适配器模式适配(转换)的概念无处不在适配,即在不改变原有实现的基础上,将原来不兼容的接

8、口转换为兼容的接口。即能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口新买的MP3播放器,只提供了 USB接口充电的方式,需要为目前所配备的充电器装上一个USB接口的转 换器,才可以解决这个问题。定义将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两 个类能够在一起工作。使接口不兼容的那些类可以一起工作。参与者目标抽象类(Target)(客户端所期待的接口,目标可以是具体的或者抽象的类或者是接 口)*定义客户要用的特定领域的接口 适配器:公接口( Adapter)(包装Adaptee对象把源接口变为目标接口)*调用另一个接口,作为一个转换器适

9、配器:母接口(Adaptee)(需要适配的类)* 定义一个接口,适配器需要接入客户调用类(Client)协同对象符合适配器适配器(公接口)适配雄摂式-Adiptei 结构屋吾1疋聖的炭-uiigjLw*过無虑耳屯番卡心:曲片誓 迅療!li H復;!H*r拒口!EuitlJdh ill |i3L9iLnc ?4.Wd(in c : CoopcncnitJ卜“Pi Q z C-cmpcrjKl:J zTltplPYf何 左饵h r KtjlAddfin c ! CcM|rih3l- JCoEDvvfin c : Cbapwimi.:参与者:物 部件抽象接口( Component)* 为组合的对象声

10、明接口。某些情况下,实现从此接口派生出所有类共有的默认行为。定义一个接口可以 访问及管理它的多个子部件。如果必要,也可以在递归结构中定义一个接口访 问它的父节点,并且实现它。物组合类(Composite)* 定义有子节点(子部件)的部件行为。存储子节点(子部件)。* 在Component部件抽象接口中实现与子部件相关的操作。(增,删)物 叶部件(Leaf)* 在组合中表示叶节点对象,叶节点没有子节点。定义组合中原接口对象的行为。 客户应用程序(Client)* 通过部件抽象接口控制组合部件的对象。组合模式 明的组合模式透明模式的好处:宴基本遵循了依赖倒置原则,方便系统进行扩展。优点:可以清楚地

11、定义分层次的复杂对象,表示对象的全部或部分层次,使得增加新部件也更容易,提供 了对象管理的灵活接口。其对树结构的控制有神奇的功效。缺占:使得设计变得更加抽象。适用性:動想表示一个对象整体或部分层次。想让客户能够忽略不同对象的层次的变化。对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。维护和展示部分-整体关系的场景,如树形菜单一、-文件和文件夹管理。一 装饰模式一千舄峙*V.BtLad ljJIpM-iicL-sn QA1-Mdc曲xaw nrl nfiJfwr-Hr-im 01,1i|F定义:动态地给一个对象添加一些额外的职责,就增加对象功能来说,装饰模式相比生成子类更为灵活。

12、 宴饰:權武:、纬杓圈参与者:部件(Compontent)* 定义对象的接口,可以给这些对象动态增加职责(方法)。物具体部件(Concrete Compontent)*定义具体的对象,装饰抽象类可以给它增加额外的职责(方法)。*装饰抽象类(Decorator)* 维护一个内有的部件,并且定义一个与部件接口一致的接口。继承Compontent 类从外类来扩展Compontent类。也具体装饰对象(Concrete Decorator)臨 具体的装饰对象,(给Concrete Compontent类)给内在的具体部件对象增加具 体的职责(方法)优占 1提供了比静态继承更好的柔韧性,允许开发一系列的

13、功能类来代替增加对象的行为,这既不会污 染原来对象的源码,还能使代码更容易编写,使类更具扩展性,因为变化都是由新的装饰类来完成的。 2 还可以建立连接的装饰对象关系链。 3 可以替代继承,解决我们类膨胀的问题。继承是静态地给类增加功 能,而装饰模式则是动态地增加功能。缺点;1装饰链不易过长,太长会使系统花费较长时间用于初始化对象,同时信息在链中的传递弛会浪费 太多的时间。2 如果原来的对象接口发生变化,它所有的装饰类都要修改以匹配它的变化。 3 派生子类会 影响对象的内部,而一个 Decorator 只会影响对象的外表。适用性;需要扩展一个类的功能,或给一个类增加附加功能。需要动态地给一个对象增加功能,这些功能可以再动态地撤销。 需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式。代理模式定义;为其他对象提供一个代理以控制对这个对象的访问。当客户向代理对象第一次提出请求时,代理实例化真实的对象,并且将请求传给它,以后所有的客户请求都经由代理传给封装了的真实对象。wnL 1参与者;抽象实体接口( Subjec

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号