OOP及其基础规则延伸简单整理(方法论)

首先安利大神官网 https://www.liaoxuefeng.com/

本文参考了许多大神写的博客,感谢各位大神,如果涉及侵权可联系我删除博客。

OPP及其规则

一:正确理解一个概念。

oop:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。

特性:抽象,封装,继承,多态。

二:计算机世界的方法论

  1. 输入
  2. 输出
  3. 输入和输出逻辑一致

三:POP,OOP,AOP,SOA

POP:面向过程的编程。

https://blog.csdn.net/small_mouse0/article/details/62895790

是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。https://www.cnblogs.com/lixianpeng/p/8613080.html (里边这个图解不错)

OOP:面向对象的编程

:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。 https://www.cnblogs.com/xiaosongluffy/p/5072501.html

SOA:面向服务结构的编程

面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。https://www.cnblogs.com/549294286/p/5089585.html

AOP:面向切面的编程

https://www.cnblogs.com/Wolfmanlq/p/6036019.html

https://www.cnblogs.com/bdpsc/p/5955494.html

AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。 https://baike.baidu.com/item/面向切面编程/6016335?fr=aladdin

OOP:面向对象核心为对象,主要表现为 消息传递。 OOP是一种计算机编程架构。

六大原则

1. 单一职责:

https://blog.csdn.net/jo__yang/article/details/52006982

一般的登录注册都用这个。 php中主要表现为单一入口(PHP中的一些框架,zend framework,thinkphp,fleaphp,qeephp,还有cakephp 等都是单入口模式,它们都采用了统一的入口,可以根据不同的需要,分前台入口后台入口或者其他操作权限入口,这样的设计模式优点很明显,比如。权限控制,url重写,结 合MVC清晰地目录结构)。

单一原则在android里的实践 https://www.jianshu.com/p/065185f0bec5

单一职责原则的英文名称是Single Responsibility Principle,简称SRP。它的定义是:就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。单一职责的划分界限并不是总是那么清晰,很多时候都是需要靠个人经验来界定。当然,最大的问题就是对职责的定义,什么是类的职责,以及怎么划分类的职责。 http://blog.sina.com.cn/s/blog_9feea53b0102wywo.html

2. 开放闭合

主要特性:

1. 它们 "面向扩展开放(Open For Extension)"。 

2. 它们 "面向修改封闭(Closed For Modification)"。 (尽可能保持稳定,一旦确立就不许修改) https://www.cnblogs.com/gaochundong/p/open_closed_principle.html

3. 里氏代换

定义:所有引用基类的地方必须能透明地使用其子类的对象。 https://blog.csdn.net/xingyunlost/article/details/53169283

含义: 子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。

•子类中可以增加自己特有的方法。

•当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

•当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

https://www.baidu.com/s?wd=里氏代换原则&tn=25017023_13_pg&ssl_s=1&ssl_c=163f2ca57b9

4. 接口分离(主要是面向接口的编程)

接口分离原则指在设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。即,一个类要给多个客户使用,那么可以为每个客户创建一个接口,然后这个类实现所有的接口;而不要只创建一个接口,其中包含所有客户类需要的方法,然后这个类实现这个接口。

接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。https://blog.csdn.net/ibelieve1974/article/details/54924506 接口原则在android中的实践https://blog.csdn.net/qq284565035/article/details/52014089

5.依赖倒置(细节依赖抽象,抽象不依赖细节)

依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 https://www.cnblogs.com/alunchen/p/7110116.html

在Java语言中,抽象就是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或者继承抽象类而产生的类就是细节,其特点就是,可以直接被实例化,也就是可以加上关键字new产生的对象。高层模块就是调用端,底层模块就是具体实现类。

依赖倒置原则在Java语言中的表现就是:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的。概况为一句话就是:面向接口编程,或者说是面向抽象编程,这里的抽象只得就是接口或抽象类。面向接口是面向对象的精髓之一。

在Java语言中,抽象就是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或者继承抽象类而产生的类就是细节,其特点就是,可以直接被实例化,也就是可以加上关键字new产生的对象。高层模块就是调用端,底层模块就是具体实现类

依赖倒置原则在Java语言中的表现就是:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的。概况为一句话就是:面向接口编程,或者说是面向抽象编程,这里的抽象只得就是接口或抽象类。面向接口是面向对象的精髓之一。

https://www.jianshu.com/p/6a7ad411188e

6.迪米特法则

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。

迪米特法则还有一种解释:Only talk to your immediate friends,即只与直接朋友通信.首先来解释编程中的朋友:两个对象之间的耦合关系称之为朋友,通常有依赖,关联,聚合和组成等.而直接朋友则通常表现为关联,聚合和组成关系,即两个对象之间联系更为紧密,通常以成员变量,方法的参数和返回值的形式出现.

那么为什么说是要与直接朋友通信呢?观察直接朋友出现的地方,我们发现在直接朋友出现的地方,大部分情况下可以接口或者父类来代替,可以增加灵活性. (需要注意,在考虑这个问题的时候,我们只考虑新增的类,而忽视java为我们提供的基础类.) https://www.jianshu.com/p/14589fb6978e

强调两点:

•第一要义:从被依赖者的角度来说:只暴露应该暴露的方法或者属性,即在编写相关的类的时候确定方法/属性的权限

•第二要义:从依赖者的角度来说,只依赖应该依赖的对象

设计模式的六大法则(参考博客)

http://wiki.jikexueyuan.com/project/java-design-pattern-principle/principle-5.html

https://blog.csdn.net/fanyun_01/article/details/51956076

https://www.cnblogs.com/itfenqing/p/7750524.html

: 重写:方法名相同,返回类型相同。 重载:方法名相同,参数列表不同。 https://blog.csdn.net/zhu_apollo/article/details/1852542

注:转载需注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值