zoukankan      html  css  js  c++  java
  • 读《大话设计模式》和《head first 设计模式》心得

    1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

    2.如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。就一个类而言,应该仅有一个引起它变化的原因。

    3.开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序员呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

    4.里氏代换原则:子类型必须能够替换掉它们的父类型。只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。(企鹅不能继承鸟类!)

    5.迪米特法则(最少知识原则):在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为不要公开。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,可以通过第三方转发这个调用。也就是说,不要对具体的实现编程,应该对接口编程。

    6.合成/聚合利用原则:尽量使用合成/聚合,尽量不要使用类继承。继承是一种强耦合,组合是一种弱耦合。

    7.每个地方都采用开放-关闭原则,是一种浪费,也没必要,还会导致代码变得复杂且难以理解。我们需要把注意力集中在设计中最有可能改变的地方,然后应用开发-关闭原则。这牵涉到设计OO系统的经验,和对你工作领域的了解。

    8.要依赖抽象,不要依赖具体类。下面的指导方针,能帮你避免在OO设计中违反信赖倒置原则:

       1>变量不可以持有具体类的引用;

        2>不要让类派生自具体类;

        3>不要覆盖蕨类中已实现的方法。

  • 相关阅读:
    Codeforces 405E DFS
    Codeforces 433C #248_div1_A 中位数的应用
    UVALive 4487 Exclusive-OR 加权并查集神题
    Codeforces 442A Borya and Hanabi
    人工智能:实现人工智能是是不可能的吗?
    关于kinect开发的网址
    jsp笔记(1)
    关于Kinect音频开发的探究
    windows10添加电源计划修改的快捷方案
    关于 kinect 的开发
  • 原文地址:https://www.cnblogs.com/cly84920/p/4427109.html
Copyright © 2011-2022 走看看