zoukankan      html  css  js  c++  java
  • 关于面向对象封装的思考--持续更新

    1. 字段通常定义为private,属性通常实现为public,而方法在内部实现为private,对外部实现为public,从而保证对内部的数据的可靠性读写控制,保护了数据的安全和可靠,同时又提供了与外部接口的有效交互。

    2. 观点一为常规情况,到具体操作还是需要根据实际设计而定。例如:有时候将属性实现为private,也将方法实现为private是更好的选择。

    3. 从内存和数据持久性角度来考虑,有一个很重要但常常被忽视的事实是,封装属性提供了数据持久化的有效手段。因为对象的属性和对象一样在内存期间是常住的,只要对象不被回收,其属性值也将一直存在,并且记录最近一次对其更改的数据。

    4. 在面向对象中,封装的意义还远不之类设计层面对字段、属性和方法的控制,更重要广义的层面是保证:
    1) 隐藏系统实现细节,保证系统的安全性和可靠性
    2) 提供稳定不变的对外接口。因此,系统中相对稳定部分常常被抽象为接口
    3) 封装保证了代码的模块化,提供软件的复用和功能的分离


    封装规则:
    1. 尽可能的调用类的访问器,而不是成员,即使在类的内部
    2. 内部私有部分可以任意更改,但是一定要在保证外部接口稳定的情况
    3. 对字段的读写控制实现为属性,而不是方法
    4. 类封装是由访问权限来保证的,对内部实现为private,外部为public

    接口规则:
    1. 接口隔离原则强调接口应该被实现为具有单一功能的小接口,而不要实现具有多个功能的胖接口
    2. 接口支持多继承,既可以作用于值类型,也可以作为引用类型
    3. 禁止为已经发布的接口添加新成员,这意味着你必须重新修改所有实现了该接口的类型;
    4. 接口不能被实例化,没有构造函数,接口成员被隠式的声明为public


    设计原则:
    1. 单一职责原则
    2. 开放封闭原则
    3. 依赖导致原则:应该依赖于抽象而不是具体
    4. 接口隔离原则:尽量应用专门的接口,而不是单一的总接口,接口应该面向用户,将依赖建立在最小的接口上。
    5. Liskov替换原则:子类必须能够替换其基类
    6. 迪米特法则:最少知识原则,软件实体应该尽可能少的和其他软件实体发生相互作用
    7. 合成、聚合复用原则:在新对象中聚合已有对象,使之成为新对象的成员,从而通过操作这些对象达到复用的目的。应该少继承多聚合。


    单一职责原则:关键点在于引起来变化的原因来把握,而不是根据功能点来划分。代表模式是:Facade和Proxy

    开放封闭原则:核心思想是对抽象编程而不是对具体进行编程。
    (Liskov替换原则和合成聚合原则)
    代表设计模式为:Template Method 和 Strategy模式

  • 相关阅读:
    hdu6393 Traffic Network in Numazu 树链剖分
    codeforces 1180E Serge and Dining Room 线段树
    codeforces 546E Soldier and Traveling 网络流
    E
    poj3207 Ikki's Story IV
    【2020牛客多校第二场】F Fake Maxpooling
    【2020牛客多校第一场】J Easy Integration
    【ICPC2015沈阳M】Meeting
    【 AtCoder Beginner Contest 169】C Multiplication 3
    【AtCoder Beginner Contest 169】B Multiplication 2
  • 原文地址:https://www.cnblogs.com/KruceCoder/p/10370844.html
Copyright © 2011-2022 走看看