概述()研讨.ppt

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

* 要让Soldier类使用AUG的个性方法zoomOut,则不能使用:AbstractGun _gun为_gun属性的类型,则需直接调用AUG:AUG _gun。 * 运行结果:father... * 运行结果:father... * Father * Father * 此处是重载Overload,而不是覆写Override。 * 里氏替换原则为良好的继承定义了一个规范,一句简单的定义包括了四层含义: * * 采用本原则时,应该尽量避免子类有“个性”,一旦子类有了个性,与父类之间的关系就难以调和。把子类当做父类用,子类的个性被抹杀;把子类单独作为一个业务来使用,则代码间的耦合关系就过于复杂缺乏类替换的标准。 * * 继承在给程序设计带来巨大便利的同时 * ?运行结果: 100-50=50 100-80=20 * ?运行结果: 100-50=50 100-80=20 * ?运行结果: 100-50=50 100-80=20 * ?运行结果: 100-50=50 100-80=20 * 使用继承时遵循里氏替换原则 在实际编程中,我们常常会通过重写父类的方法来完成新的功能,这样写起来虽然简单,但是整个继承体系的可复用性会比较差,特别是运用多态比较频繁时,程序运行出错的几率非常大。 * * * ?里氏代换原则是实现开闭原则的重要方式之一。在本实例中,在传递参数时使用基类对象,除此以外,在定义成员变量、定义局部变量、确定方法返回类型时都可使用里氏代换原则。针对基类编程,在程序运行时再确定具体子类 * * ?(1)子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。根据里氏代换原则,为了保证系统的扩展性,在程序中通常使用父类来进行定义,如果一个方法只存在子类中,在父类中不提供相应的声明,则无法在以父类定义的对象中使用该方法。 ????? (2) ?我们在运用里氏代换原则时,尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法,运行时,子类实例替换父类实例,我们可以很方便地扩展系统的功能,同时无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现。里氏代换原则是开闭原则的具体实现手段之一。 ????? (3) Java语言中,在编译阶段,Java编译器会检查一个程序是否符合里氏代换原则,这是一个与实现无关的、纯语法意义上的检查,但Java编译器的检查是有局限的。 * 依赖倒置原则(Dependence Inversion Principle,简称DIP) 依赖就是耦合 零耦合(Nil Coupling)关系, 两个类没有依赖关系. 具体耦合(Concrete Coupling)关系,两个具体类之间有依赖关系,那么就是具体耦合关系 抽象耦合(Abstract Coupling)关系.发生在一个具体类和一个抽象类之间,这样就使必须发生关系的类之间保持最大的灵活性 * 依赖倒置原则(Dependence Inversion Principle,简称DIP) * 依赖倒置原则(Dependence Inversion Principle,简称DIP) * 软件实体: 对扩展开放,对修改关闭 * 满足开闭原则 * 现在它还符合开闭原则吗?不! 每次会计部门发布一个新的价格政策时,我们都需要修改totalPrice()方法!它对修改不是关闭的, 显然,价格政策的改变意味着我们必须修改某处的代码 * 下面是Part和ConcretePrat类 * 那么我们应该怎么做呢?为了使用我们第一个版本的totalPrice()方法,我们需要把Part的 getPrice()方法的价格政策包含进来。 * Motherboard * 使用这种方法,我们可以在运行时动态的设置Part对象所引用的PricePoilcy对象,在实际的程序中,零件的价格和相关的PricePolicy可以从数据库中获取 像许多其他原则一样,开闭原则只是面向对象设计的一个原则,实现一个灵活的设计需要额外的时间和努力,引入新的抽象层会增加代码的复杂性。因此,该原则适用于那些需求会经常发生变化的系统。有许多设计模式可以帮助我们扩展功能而不需要修改代码。例如,装饰模式等。 * 封装可变性:限制变化的影响范围 大概就是把可变的东西抽象出来吧 * * * 因为xml和properties等格式的配置文件是纯文本文件,可以直接通过VI编辑器或记事本进行编辑,且无须编译,因此在软件开发中,一般不把对配置文件的修改认为是对系统源代码的修改。如果一个系统在扩展时只涉及到修改配置文件,而原有的Java代码或C#代码没有做任何修改,该系统即可认为是一个符合开闭原则的系统。 * 封装可变性:限制变化的影响范围 大概就是

文档评论(0)

cc880559 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档