设计模式专题(一)——面向对象的设计原则

设计模式专题(一)——面向对象的设计原则

(原创内容,转载请注明来源,谢谢)

设计模式在程序中,主要服务于设计类、接口等,是以面向对象为基础的,因此面向对象的设计原则是各设计模式中都会考虑与体现的。本篇内容主要从全局角度讲述设计模式的原则,具体每种设计模式的实现,将在后续的文章中逐个写明。

面向对象的设计共有五大原则。

一、单一职责(SRP)

1、含义

单一职责主要满足两点内容:相同的职责避免分散到多个类中;一个类中避免承担太多的职责。

2、最明显体现单一职责的设计模式主要是工厂模式和命令模式。

3、示例

要实现不同数据库的连接,即可以采用工厂模式,通过用户输入的数据库类型,自动进行连接。主要需要实现以下内容:

1)定义接口,要求继承该接口的类都要实现query、where、order、from、select等方法;

2)定义工厂类,其中一个方法通过用户输入的数据库类型,拼接出相应的实现该类型数据库连接的类;

3)实现各类数据库连接的类,每种数据库定义一种类。

4)调用工厂类,输入数据库名,实现连接数据库。

二、接口隔离(ISP)

1、含义

接口隔离主要要求:客户端(如调用接口的类)不应被迫接受不需要的接口,导致被迫定义空方法;一个类对另一个类的依赖应建立在最小接口上。

2、最明显体现接口隔离的设计模式主要是策略模式和代理模式。

三、开放-封闭原则(OCP)

1、含义

开放-封闭原则要求:模块在扩展性上开放,在更改性上封闭;模块在扩展的时候,应该尽量减少对现有模块的改造和影响。

2、最明显体现接口隔离的设计模式主要是装饰模式。

四、替换原则(LSP)

1、含义

替换原则要求:子类型必须能够替换父类型,并出现在父类型任何能出现的地方。因此,满足LSP原则的类,要求基础父类的子类,要覆盖到父类的所有方法,即要求子类调用父类的方法,或者对父类中的方法进行重写。

五、依赖倒置(DIP)

1、含义

依赖倒置要求:上层模块不应依赖下层模块,而应是共同依赖与一个抽象;抽象不依赖于具体,具体依赖于抽象。其核心就是解耦,使各类之间的依赖度降低。

2、实现方式

在高层次的类中提出接口的声明,在低层次中实现接口;高层次的类通过抽象接口使用服务。

——written by linhxx 2017.6.30

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ImportSource

设计模式-抽象类,只是想为你做更多

如果说面向对象中的接口是把所有的事情扔给你的话,那么抽象类显然是想要为你做一些事情,如果实在有一部分做不了再扔给你。 相信对于大部分业务开发的场景下都不太会需要...

3337
来自专栏原创

教你如何用AST语法树对代码“动手脚”

作为程序猿,每天都在写代码,但是有没有想过通过代码对写好的代码”动点手脚”呢?今天就与大家分享——如何通过用AST语法树改写Java代码。 先抛一个问题:如何将...

5796
来自专栏我是业余自学C/C++的

C和C++中的sizeof

1194
来自专栏魂祭心

原 Introduction to the

3539
来自专栏阿杜的世界

如何设计接口的测试用例边界值测试组合条件测试

今天在帮同事review代码的时候,发现他的代码遗漏了一些场景的处理,就顺便跟他多聊了些为对这个话题的看法。

842
来自专栏华仔的技术笔记

浅谈Objective-C设计模式(Design Pattern)import "Singleton.h"

3267
来自专栏编程心路

Java 动态代理,看这篇就够了

这篇文章需要用到 Java 的反射知识,如果对反射还不清楚的小伙伴,可以先移步到这里 《Java进阶-反射》。

1524
来自专栏C语言及其他语言

【编程经验】C语言程序真正的启动函数(文末有福利,第二弹)

又到了小编和大家说到的时间了,闲话少说,直接上正题,今天就讲讲“C语言程序真正的启动函数”。 为什么要用”真正”这个词?因为我们从...

30912
来自专栏linux驱动个人学习

设计模式

一、设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面...

2895
来自专栏新智元

Go 2.0发布在即,程序员有太多话要说

Go语言的开发者正着手准备开发2.0版本,并从以下三个方面发布了初步的设计方案(非官方正式版),以供社区开展讨论:

4201

扫码关注云+社区