- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计原则 SRP 单一职责原则 OCP 开放-封闭原则 LSP Liskov(里氏)替换原则 DIP 依赖倒置原则 ISP 接口隔离原则 CARP (Composition/Aggregation Principle ) 合成/聚合复用原则 LoD (Law of Demeter) 迪米特法则 CARP 别名:Composite Reuse Principle 合成复用原则 Composition(合成) vs. Aggregation(聚合) 聚合表示“拥有”关系或者整体与部分的关系 合成是一种强得多的“拥有”关系——部分和整体的生命周期是一样的。一个合成的多重性不能超过1 复用的基本种类 合成/聚合复用:将已有对象纳入到新对象中,使之成为新对象的以部分。 继承 复用 优先使用对象合成/聚合,而不是继承 继承的优点:①新类易实现. ②易修改或扩展 继承的缺点:①继承复用破环包装,白箱复用. ??????????? ②超类发生变化,子类不得不改变. ??????????? ③继承的实现是静态的,不能在运行时改变. 利用合成/聚合可以在运行时动态配置组件的功能,并防止类层次规模的爆炸性增长 区分HAS-A 和 IS-A LoD 别名:Least Knowledge Principle 最少知识原则 表述: 只与你直接的朋友们通信 Only talk to your immediate friends 不要跟陌生人说话 Dons talk to strangers 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 LoD的实质是控制对象之间的信息流量,流向及信息的影响 -- 信息隐藏 优先考虑将一个类设置成不变类 尽量降低类/成员的访问权限 OO设计目标与原则 可扩展性 (OCP, LSP, DIP, CARP) 灵活性 (OCP, LoD, ISP) 可插入性 (OCP, LSP, CARP, DIP) SmallTalk: MVC Model-View-Controller (MVC) [Krasner and Pope,1988] 指导模式设计的三个概念 重用(reuse):是目标 两种重要的重用手段 Inheritance composition 接口与实现分离 接口保持不变,分离带来灵活性 多态性(polymorphism) Decouple 降低复杂性 Creational Patterns 创建模式是对类的实例化过程的抽象化。 怎样创建对象,创建哪些对象,如何组合和表示这些对象? 创建模式描述了怎样构造和封装这些动态决定 Creational Patterns Simple Factory 简单工厂 Factory Method 工厂方法 Abstract Factory 抽象工厂 Builder 构造者 Prototype 原型 Singleton 单例 Simple Factory Alias: Static Factory Method 静态工厂方法 Intent 由一个工厂对象决定创建出哪一种产品类的实例 Motivation 负责将大量有共同接口的类实例化 Example Solution Structure Participants Product 定义产品共同拥有的接口 Concrete Product 具体产品,实现Product接口 Creator (工厂类) 静态方法中含有与应用紧密相关的业务逻辑,在客户端的直接调用下创建产品对象 Consequences 优点:由工厂类决定在什么时候创建哪一个产品类的实例,而客户端可以免除直接创建产品对象的责任,而仅仅负责“消费”产品。 缺点:工厂类集中了所有的产品创建逻辑(God Class);创建新产品比较困难;静态方法无法由子类继承,无法形成基于继承的等级结构。 Example Participants Product 定义工厂方法所创建的对象的接口 ConcreteProduct 实现Product接口 Creator 声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象 可以调用工厂方法以创建一个Product对象 ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct实例 Collaborations Creator依赖于它的子类来定义工厂方法,所以它返回一个适当的ConcreteProduct实例。 Implementation 特定语言的变化和问题 SmallTalk使用一个方法返回被实例化的对象的类 C+
文档评论(0)