基本的面向对象原则(Basic OO principles)

用户头像
旭东(Frank)
关注
发布于: 2020 年 06 月 16 日
基本的面向对象原则(Basic OO principles)

前言

作为专科出生程序员,上学的时候我们第一次接触面向对象编程(OOP)的语言时就会提及这三个最基本原则

  1. Encapsulation(封装)

  2. Inheritance(继承)

  3. Polymorphism(多态)

当然还也还有与之相关的一些关系 dependcy(依赖), abstraction(抽象), association(关联), aggregation(聚合), and composition(组合)

 

这种原则就像 ABC 书,因为它们定义了面向对象世界的基础。

这些东西虽然听起来很熟悉,但您是否真正理解了,还需要晒晒你的代码啦…(事实是检验一切唯一的依据)

这知识就不再这里赘述啦,大家可自行google,百度,也可翻翻大学那些已经尘封已久的教科书,说不定还会捡起一些其他的回忆



熟悉的SOLID(‘类’层次设计原则)



面向对象设计原则科学界定最常见派生方法构建健壮且灵活的系统。

而SOLID原则又被证明是解决无法被基本的面向对象原则捕获的众多 OO 设计问题的最佳工具。



缩写全称中文名称相关论文链接

SRP (Single Responsibility Principle)单一责任原则The Single Responsibility Principle

OCP (Open / Closed Principle)开放封闭原则The Open Closed Principle

LSP(Liskov Substitution Principle)里氏替换原则The Liskov Substitution Principle

ISP (Interface Segregation Principle)接口分离原则The Interface Segregation Principle

DIP(Dependency Inversion Principle)依赖倒置原则The Dependency Inversion Principle

单一责任原则

There should never be more than one reason for a class to change。

翻译:类修改的原因应(理由或者动机)该只有一个。

 

开放封闭原则

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

翻译:软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。

 

对扩展的开放,对变化的封闭,这个理解和老师的讲解一致

里氏替换原则

Subtypes must be substitutable for their base types.

翻译:子类型(subtype)必须能够替换掉它们的基类型(base type)

 

这个技术点里,正方形是矩形吗的实例,让人对替换的精髓有了更深刻直接的认识





依赖倒置原则

High level modules should not depend upon low level modules. Both should depend upon abstractions.

Abstractions should not depend upon details. Details should depend upon abstractions。

翻译:

A、 高层模块不应该依赖于低层模块,两者都应该依赖于抽象。

B、  抽象不应该依赖于细节,细节应该依赖于抽象。 




这一点老师的理解是从角色的角度去考虑,

service interface 接口是为controller来设计的,这样才是依赖倒置,如果controller依赖现有的接口那不能算倒置



主动权不一样,抽象层提出的抽象,让实现的提供者去提供

不倒置,是实现依赖实现,还有一种是客户代码需要依赖已经存在的接口。而不是客户按需定义的接口



个人理解

本来实际是依赖实现的,现在你不要依赖我的实现依赖我的接口就行



接口分离原则

Clients should not be forced to depend upon methods that they do not use. Interfaces belong to clients, not to hierarchies.

翻译:不应该强迫客户依赖于它们不要的方法。接口属于客户,不属于它所在的类层次结构。

 

一个人在社会上有不同的角色,如何能够做好每个角色,就需要把每个角色权利和义务弄清楚,接口分离其实就是这个思路。



发布于: 2020 年 06 月 16 日 阅读数: 103
用户头像

旭东(Frank)

关注

世事洞明皆学问,日思一刻,日拱一卒。 2011.04.01 加入

微信公众号:ThinkingInDev,记录工作过程中点滴思考。这里有坑,有料,有思,有想的开发工作日记

评论

发布
暂无评论
基本的面向对象原则(Basic OO principles)