面向对象设计原则: 
单一职责原则 SRP :
  一个类或者行为只做一件事 。
 降低代码冗余,提高可重用性,可维护性,可扩展性,可读性 使用组合形式
 
里氏替换原则 LSP : 
所有引用基类的地方必须能够透明的使用子类。
如果类型S 的对象O1  ,都有类型为T 的对象O2  , 那么T 定义的所有程序在所有对象O1 都替换成O2 时, 程序没有变化。
爸爸能干的儿子都能干,引用爸爸的地方一定可以引用儿子。
 
依赖倒置原则 DIP : 
属于里氏替换原则的补充
面向抽象编程:  关键词: 接口,抽象
依赖: 一个对象O1 需要实现某一个功能时必须让另一个对象O2的某一个功能先实现,那么他们就存在依赖关系O1依赖于O2。
依赖注入 IOC:  将依赖的部分O2 作为O1 的属性注入,注入一定是抽象的。
 
接口隔离原则 ISP : 
客户端不应该依赖于那些他不需要的接口
一旦一个接口太大,则需要将他分隔成一些更细小的接口,使用该接口的客户端只需要知道与之相关的方法即可
 
迪米特里法则 LOD : 
每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位
不要和陌生人说话: 
当前对象this 
以参数形式传入当前对象方法中的对象
当前对象的成员对象
如果当前对象是一个集合,那么集合中的元素都属于朋友
当前对象自己创建的对象
 
开闭原则 OCP : 
对扩展开放,对修改关闭。
EVP ---  对可变性封装原则:找到系统中可能引起系统改变的因素,并将它封装起来
 
聚合复用原则 / 合成复用原则  ARP/CRP
尽量使用对象组合,而不是继承来达到复用的目的
黑箱复用,耦合度相对较低,选择性的调用成员对象的操作,可以在运行时动态进行
 

JAVA 框架之面向对象设计原则的更多相关文章

  1. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

  2. (转)Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  3. Java程序员应当知道的10个面向对象设计原则

    面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注 ...

  4. [译]Java 程序员应该了解的 10 个面向对象设计原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  5. 【Java工程师之路】[1-2.2]Java10个面向对象设计原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  6. 面向对象设计原则OO

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  7. 设计模式学习(二):面向对象设计原则与UML类图

    一.UML类图和面向对象设计原则简介 在学习设计模式之前,需要找我一些预备知识,主要包括UML类图和面向对象设计原则. UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设 ...

  8. 【面向对象设计原则】之依赖倒置原则(DIP)

    依赖倒转原则(Dependency Inversion  Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象.换言之,要针对抽象(接口)编程,而不是针对实现细节编程. 开闭原则( ...

  9. .net面向对象设计原则

    稳定的框架来源于好的设计,好的设计才能出好的作品,掌握面向对象基本原则才会使我们的设计灵活.合理.不僵化,今天就来谈一谈我们.net 面向对象设计的基本原则. 对于一个没有任何设计经验的开发者来说,如 ...

随机推荐

  1. ACM学习历程—Hihocoder 1164 随机斐波那契(数学递推)

    时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 大家对斐波那契数列想必都很熟悉: a0 = 1, a1 = 1, ai = ai-1 + ai-2,(i > 1). ...

  2. ACM学习历程——POJ3295 Tautology(搜索,二叉树)

    Description WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some ...

  3. BZOJ2028:[SHOI2009]会场预约(线段树版)

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...

  4. bzoj 4453 cys就是要拿英魂! —— 后缀数组+单调栈+set

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4453 这种问题...一般先把询问离线,排序: 区间对后缀排名的影响在于一些排名大而位置靠后的 ...

  5. u-boot.lds 链接脚本分析(hi3515)

    目录:/u-boot_hi3515/board/hi3515v100 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm& ...

  6. Python 同ip网站查询(制作网站接口)

    老师专门打电话回来说不让玩电脑~~   呵呵.  LOL把被人坑死了. 五排果然不适合我. 去翻了下曾经的Python项目. 在爬虫文件夹下面找到了这个. 我也就厚脸皮的什么都不改就放上来了: #co ...

  7. jvm虚拟机androidy移植-编译篇

    有这个必要吗?都过时的东西了,android上的Dalvik效率不够高吗,不够逼格吗? 是的但有总东西是不是我们这些码农能决定的,领导和项目需求才是你要关心的,毕竟工作要向领导汇报,项目要去挣钱钱,但 ...

  8. Hibernate Annotation (…

    引自:http://www.cnblogs.com/hongten/archive/2011/07/20/2111773.html 进入:http://www.hibernate.org 说明文档: ...

  9. C++读取XML,tinyXml的使用

    前言: 最近在开发的过程中,有个需求是对xml进行格式转化,从一种格式转化到另外一种格式.因此,就需要读取xml进行处理.原本打算写成工具在linux下运行,不过后来考虑到和系统结合,最后也就使用了前 ...

  10. HDU - 6383 百度之星2018初赛B 1004 p1m2(二分答案)

    p1m2  Accepts: 1003  Submissions: 4595  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 131072 ...