• Java 面向对象的设计原则


      一、

      1、面向对象思想的核心:

      封装、继承、多态。

     

      2、面向对象编程的追求:

      高内聚低耦合的解决方案;

      代码的模块化设计;

      3、什么是设计模式:

      针对反复出现的问题的经典解决方案,是对特定条件下(上下文)问题的设计方案的经验总结,是前人设计实践经验的精华。

      4、面向对象设计原则

      是面向对象设计思想(法理精神)的提炼(基本宪法),比面向对象思想的核心要素更具有实操性,比设计模式(各种具体法律条文)更抽象。

      5、如何最大限度降低耦合度?

    1. 少用类的继承,多用接口隐藏实现细节。
    2. 避免使用全局变量。
    3. 多用设计模式。如MVC~
    4. 尽量不用“硬”编码方式写程序,尽量避免直接使用SQL语句操作数据库。
    5. 避免直接操作或调用其它模块或类,无法避免就尽量减小耦合程度

      7、面向对象常用设计原则:SOLID

    1. 单一职责原则;
    2. 开放封闭原则;
    3. Liskov替换原则;
    4. 接口隔离原则;
    5. 依赖倒置原则;
    6. 迪米特法则;
    7. 合成/聚合复用原则;

      二、

      1、最小化访问权限

      从信息隐藏的角度看,应该最大程度对类进行封装,只要有可能就把方法和属性成员定义为私有,再考虑逐步增加权限。       

      防御式(Defensive)编程:防御式设计的体现,为了保证对程序的不可预见的使用不会造成之后程序功能的破坏。

      如何保护程序免受非法数据的破坏?

    1. 检查来自外部资源的数据值,例如来自网络的数据值和来自文件的数据值;
    2. 检查子程序所有输入参数的值,与上类似;
    3. 决定如何处理错误的输入数据,对不同的错误类型进行处理。

      2、以类代替基本数据类型

      类中如果有相互关联的多个基本数据类型,应将其抽取为一个类。

      3、单一职责

      涵义:一个类只涉及用来实现一个职责,只会有一个引起变化的原因。

      面向对象设计的核心任务,就是发现职责并把这些职责相互分离。如果能想到多余一个动机去改变一个类,那么这个类就具有多一个职责,应考虑分解。

      

      4、不要重复造轮子

      定义:不写重复的代码(针对功能而不是代码),用Abstraction类抽象公有的东西。 

      若多次用到一个硬编码值,则将其设置为公共常量;

      若需要在两个以上的地方使用一个代码块,可以将其抽取为一个独立的方法。

      不能滥用功能代码的合并!

      

      5、开放封闭原则(OCP)

      定义:软件实体应该对扩展开放,而对修改封闭。

      对扩展开放,意味着有新的需求变化时,可以对现有代码进行扩展,适应新情况。

      对修改封闭,意味着一旦设计完成,不要对类的实现做修改。

      如何做到?

           核心思想:对抽象编程,不是针对具体编程。

      编程角度:

      针对接口编程,而不是针对实现编程。

      应该使用接口类型作为方法返回类型、方法参数类型。

      6、里氏替换原则(LSP)

      定义:任何基类可以出现的地方,子类一定可以出现。

      只有当子类可以替换父类,软件单位的功能不受影响时,父类才能真正被复用,而子类也可以在父类的基础上增加新的行为。

      如果子类不能完整地表达父类,那么建议断开父子继承关系,采用组合等关系替代。

      7、依赖倒置原则(DIP)

      定义:程序设计要依赖抽象,不要依赖具体。即对抽象编程,不要对实现进行编程,降低调用类与实现模块间的耦合。

       高层次模块不应该依赖于低层次模块,都应该依赖于抽象;

      抽象不应该依赖于具体,具体应该依赖于抽象。

      8、迪米特法则

      涵义:又称最少知识原则,即一个对象应当对其他对象了解得尽可能少。

      目的:

      降低类之间的耦合,让每个类尽量减少对其他类的依赖。

      不过这样也可能造成系统中存在大量的中介类,臃肿。

  • 相关阅读:
    20201224-3
    20201224-3 列表的使用1
    20201224 字符串常用操作
    20201224-1
    20201223-1 俄罗斯方块
    3月27日:毕业设计计划
    3月26日:毕业设计计划
    3月25日:毕业设计计划
    3月24日:毕业设计计划
    3月23日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8422297.html
Copyright © 2020-2023  润新知