青蛙小白
#Design Patterns

设计模式之美学习笔记18: 理解接口隔离原则(ISP)中的接口

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第18节的学习笔记,介绍面向对象设计原则中的接口隔离原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) 接口隔离原则 接口隔离原则: 接口的调用者(或使用者)不应该强迫依赖它不需要的接口。 我们可以把接口理解为下面三种东西:

#Design Patterns

设计模式之美学习笔记17: 里氏替换原则(LSP)与多态的区别

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第17节的学习笔记,介绍面向对象设计原则中的里氏替换原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) 里氏替换原则 里氏替换原则: 子类对象能够替换程序中的父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。 从定义描述和代码实现上来看,多态和里氏替换原则有点类似,但它们关注的角度是不一样的。多态是面向对象一大特性,是一种语法,是一种代码实现的思路。 里氏替换是一种设计原则,用来指导继承关系中子类如何设计,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑以及不破坏原有程序的正确性。

#Design Patterns

设计模式之美学习笔记16: 设计原则之开闭原则(OCP)

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第16节的学习笔记,介绍面向对象设计原则中的开闭原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) 开闭原则 开闭原则(Open Closed Principle): 即软件实体(模块、类、方法等)对扩展开发,对修改关闭。 通俗的理解即添加一个新的功能应该是在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。 在GOF 23种经典设计模式中,大部分设计模式是为了解决代码的扩展性问题而存在的,主要遵从的设计原则就是开闭原则。

#Design Patterns

设计模式之美学习笔记15: 设计原则之单一职责原则(SRP)

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第15节的学习笔记,介绍面向对象设计原则中的单一职责原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) 单一职责原则(SRP) 一个类或模块只负责完成一个职责(或功能)。单一职责原则是为了实现代码的高内聚、低耦合,提高代码的复用性、可读性、可维护性。 单一职责原则的定义中包含类和模块,对于模块可以从不同的范围理解:

#Design Patterns

设计模式之美学习笔记11~12: 贫血模型 vs. 充血模型

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第11, 12节的学习笔记,是专栏中介绍"面向对象"这一设计原则和设计思想的两节。 笔记 这两节分上、下两节主要介绍了在Java Web开发中盛行的传统的贫血模型开发模式,是典型的面向过程的编程风格;而基于充血模型的DDD开发模式,是面向对象的编程风格。 然后作者结合一个虚拟钱包系统的例子给出了两种开发模式的示例代码,只是示例代码略微简单,作者介绍的设计思路在示例代码中体现不大。

#Design Patterns

设计模式之美学习笔记10: 组合优于继承

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第9节的学习笔记,第10节是专栏中介绍"面向对象"这一设计原则和设计思想的一节。 笔记 组合优于继承,多用组合少用继承是面向对象编程中非常经典的一条设计原则。 继承虽然是面向对象的四大特性之一,使用继承可以解决代码复用的问题,但也有其缺点: 继承层次过深、过于复杂会影响到代码的可维护性

#Design Patterns

设计模式之美学习笔记09: 基于接口编程

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第9节的学习笔记,第9节是专栏中介绍"面向对象"这一设计原则和设计思想的一节。 笔记 基于接口编程(Interface-based programing)是一个设计原则,理解这条原则里的接口两字,接口是一组协议或约定。 接口这个词在不同场景下有不同的含义,比如后端服务提供给前端服务的"接口"、类库提供的"接口"、而一组自定义的私有通信协议也可以被称作"接口",而具体编程语言中的接口一般指的是这种编程语言中的"接口或抽象类"的语法特性。我们再来看一下维基百科中“基于接口编程”的定义: 基于接口编程也称基于接口的架构,它是一种在没有模块系统的面向对象程序设计语言中的组件层面实现模块化编程的架构模式。

#Design Patterns

设计模式之美学习笔记08: 如何使用普通类模拟抽象类和接口

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第8节的学习笔记,第8节是专栏中介绍"面向对象"这一设计原则和设计思想的一节。 笔记 很多面向对象的语言都提供"抽象类"和"接口"这两个语法特性。抽象类和接口是实现面向对象四大特性、很多设计模式、设计思想、设计原则的基础。 但并不是所有编程语言都支持者两个语法特性,我们可以通过一些手段来模拟这它们。