代码之家  ›  专栏  ›  技术社区  ›  Viki

OOP有什么规定吗?

  •  19
  • Viki  · 技术社区  · 17 年前

    最近我听说OOP(Java)有9条规则。我只知道抽象、多态、继承和封装四个方面。OOP还有其他规则吗?

    6 回复  |  直到 17 年前
        1
  •  40
  •   philant    7 年前

    似乎你要找的是 Principles of Object-Oriented Design .

    从总结 Agile Software Development Principles, Patterns, and Practices . 这些原则是软件工程数十年经验的成果。它们不是单一思维的产物,但它们代表了大量软件开发人员和研究人员的整合和写作。虽然它们在这里被描述为面向对象设计的原则,但它们确实是软件工程中长期存在的原则的特例。

    单一责任原则 一个类应该只有一个更改的原因。

    开闭原理 软件实体(类、包、方法等)应打开进行扩展,但关闭进行修改。

    李斯科夫子状态原理 子类型必须可替换为其基类型。

    依赖倒置原理 抽象不应依赖于细节。细节应该依赖于upons抽象。

    界面分离原理 客户机不应该被迫依赖于他们不使用的方法。接口属于客户端,而不是层次结构。

    重复发布重用等效原则 重用的粒度就是发布的粒度。

    共同封闭原则 包中的类应该针对相同的更改关闭在一起。影响已关闭包的更改会影响该包中的所有类,而不会影响其他包。

    通用重用原则 包中的类一起重用。如果重用包中的某个类,则可以重用所有类。

    酰基依赖性原理 在依赖关系图中不允许循环。

    稳定依赖原则 取决于稳定的方向。

    稳定抽象原理 包应该是抽象的,因为它是稳定的。

        2
  •  6
  •   Adeel Ansari    17 年前

    对任何规则都不确定。所有这些对我来说更像是OO范式。我们很少有这样的建议,

    • 分心
    • 每班的单一责任
    • 比继承更喜欢组合
    • 编程到接口
    • 加上Billybob提到的所有内容,已经
        3
  •  5
  •   Mitch Wheat    13 年前

    这些OO原则直接来自 Head First Design Patterns :

    • 封装变化的内容
    • 程序到接口,而不是实现
    • 赞成和解而不赞成继承
    • 一个类应该只有一个更改的原因( 单一责任原则 )
    • 子类型必须可替换为其基类型( 李斯科夫次起爆原理 )
    • 类应该为扩展打开,但为修改关闭( 开闭原理 )
        4
  •  4
  •   billybob    17 年前

    这些是概念,而不是规则。实际上没有规则,只是做决定,有些设计比其他更好,有些比其他更好。

    虽然有很多指导原则:-有些语言是特定于语言的(C++中有很多),有些则是面向对象的。但列出的列表太多:-)

    最重要的是:

    • 松耦合,高粘聚力
    • 编写可测试类,您测试这些类
    • 谨慎使用继承,只有在有意义的地方才使用(更喜欢组合)
    • 试着坚持开/关原则。
    • (最重要的)接吻

    有很多可以扩展和添加的:—)

    编辑:我应该补充一点,您列出的规则对OO来说不是唯一的

        5
  •  4
  •   hawkeye    17 年前

    根据实用主义程序员的说法,规则是:

    • 保持干燥(不要重复)
    • 保持低调(确保您的类具有高内聚性和低耦合性)
    • 告诉另一个人(分心)

    http://media.pragprog.com/articles/may_04_oo1.pdf

        6
  •  3
  •   PhiLho    17 年前

    没有“规则”可以OOP。

    有4种语言属性可以使语言面向对象或不面向对象(这些是您在问题中列出的内容)。

    剩下的材料都是指导方针。我读过的最好/最有用的指导方针是 GRASP

    许多建议不容易被外行(非CS专业)理解。我认为把握是务实的,平易近人的。

    我认为掌握是很好的,因为它以自己的名义暗示了OO中最关键的部分——职责分配(对象不是程序员)。

    两个最关键的把握概念,其他一切都是从中派生出来的,即耦合和内聚。这两个概念/原理驱动所有其他模式和方法。

    顺便问一句-我刚采访过你吗?你把问题抄写得不正确…