UML设计模式Builder,Teplate模式.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UML设计模式Builder,Teplate模式.ppt

10.5接口隔离原则 接口隔离原则( Interface Segregation Principle ,ISP) 使用多个专门的接口比使用单一的总接口要好。 即:一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。 UML和设计模式 * 例: 3个客户端以及为它们提供服务的Service类; 3个客户端需要的服务是稍稍不同的,因此,为它们提供3个不同的接口IService1、IService2、IService3 UML和设计模式 * stophere * stophere * stophere * 本页未完成 * 本页未完成 * 房屋?Or发送邮件? * * * * 子类可以置换掉父类的可变部分,但是却不可以改变模板方法所代表的顶级逻辑。 * stophere * stophere * stophere * stophere * * UML和设计模式 UML和设计模式 UML和设计模式 UML和设计模式 权 巍 主要内容 10.1 Builder模式 10.2 Template模式 10.3 Command模式 10.4 依赖倒转原则 10.5 接口隔离原则 * UML和设计模式 10.1 Builder模式--创建型模式 软件系统中,创建“一个复杂对象”: 该对象由各个部分的子对象用一定的算法构成;由于需求的变化,负责对象的各个部分(即:各个子对象)经常变化,但是将它们组合在一起的算法却相对稳定。 如何应对这种变化?提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,并令系统中复杂对象的构建算法稳定不变。 * UML和设计模式 10.1.1 Builder模式的结构 将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 * UML和设计模式 Builder模式的角色: 抽象建造者(Builder)角色 给出一个抽象接口,以规范产品对象的各个组成成分的建造。 具体建造者(Concrete Builder)角色 在应用程序的调用下创建产品实例,完成2个任务: 实现抽象建造者声明的接口,给出一步步的完成创建产品实例的操作。 在建造过程完成后,提供产品的实例。 导演者(Director)角色 调用具体建造者角色以创建产品对象,与客户端交互,并不了解产品类的具体知识。 产品(Product)角色 产品,即:建造中的复杂对象。 * UML和设计模式 例:买肯德基儿童套餐 典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程是相同的。 客户端:顾客。想去买一套套餐(这里面包括汉堡,可乐,薯条),可以有1号和2号两种套餐供顾客选择。 导演者角色:收银员。知道顾客想要买什么样的套餐,并告诉餐馆员工去准备套餐。 建造者角色:餐馆员工。按照收银员的要求去准备具体的套餐,分别放入汉堡,可乐,薯条等。 产品角色:最后的套餐,所有的东西放在同一个盘子里面。 * UML和设计模式 10.1.2 Builder模式的示意代码 * UML和设计模式 //导演者 public class Director{ private Builder builder; // Director类的构造方法 Director(Builder builder){ this.builder=builder; } //产品构造方法,负责调用各个零件建造方法 public void construct(){ builder=new ConcreteBuilder(); builder.buildPart1(); builder.buildPart2(); ...... } } * UML和设计模式 //产品 public class Product { //产品的相关内容 } //抽象建造者 public abstract class Builder { //产品零件构造方法 public abstract void buildPart1(); public abstract void buildPart2(); //产品返回方法 public abstract Product retrieveResult(); } * UML和设计模式 //具体建造者 public class ConcreteBuilder extends Builder { private Product product=new Product(); //产品返回方法 public P

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档