文档章节

设计模式基本原理

王子城
 王子城
发布于 06/25 14:03
字数 1104
阅读 13
收藏 0

    刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太有用了。其实,感觉设计模式是前辈程序员总结下来的编程经验。

    设计模式总共可以分为三大类:

    1.创建型设计模式(5):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

    2.行为型设计模式(11) : 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    3.结构型设计模式(7) : 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

    上面是我们常用的23种设计模式。

    同时,设计模式还有六大原则:

    1.单一职责原则(SRP):一个类只负责一个功能区域,应该仅有一个引起它变化的原因。

    个人理解:单一职责原则就是要去实现高内聚、低耦合,一个类不应该承担太多的功能。开发者需要将一个功能领域中所有的功能写入类当中而不能将其他的功能写在里面,比如:一个连接数据库的工具类当中不能有其它和数据库连接不相关的工具方法。
    2.开放封闭原则(ASD):类、模块、函数等应该是可以拓展的,但是不可修改,类对扩展开放,对修该关闭。

    个人理解:当需求变化的时候,一个类不能满足目前的程序要求,这个时候我们需要做的不是修该代码来满足新的需求,而是在原有的模板当中增加新的功能模块来满足需求。
    3.里氏替换原则(LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。

    个人理解:在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
    4.依赖倒置原则(DIP):高层模块不应该依赖低层模块,两个都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象,要针对接口编程,而不是针对实现编程。

    个人理解:spring里面的面像切面编程应该就是这个原理。
    5.迪米特原则(LOD):一个软件实体应当尽可能少地与其他实体发生相互作用。

    个人理解:这样做是为了防止代码之间的耦合。
    6.接口隔离原则(ISP):一个类对另一个类的依赖应该建立在最小的接口上。

    个人理解:每一个接口只应该归纳一类功能差不多的方法而不应该有各种各样的方法。我们在编写代码的时候为了方便喜欢将一个类所需要实现的所有方法都写在该类实现的一个接口里面,这样做是不对的,可以将该类所实现的方法进行分类写在不同的接口当中,然后这个类可以去实现多个接口。

    

© 著作权归作者所有

共有 人打赏支持
王子城
粉丝 8
博文 44
码字总数 34900
作品 0
武汉
程序员
私信 提问
设计模式什么的哪有那么神秘 ----第一集 一些吐槽和重构的韵味

一日面试, ...... Hr:你对设计模式熟悉吗? 应聘者A:我了解常用的设计模式,平时经常使用工厂模式和单例模式.而且我也看过一些讲23种设计模式的书.其他不常用的模式用的不是太熟. Hr:你用过外观...

架构梦想
2013/08/04
0
7
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0
设计模式已经陨落了?

你现在是坐在一个程序员旁边吗?如果是的话,那么在你读下面的段落之前,有一个简单的实验。让他们到一边去,问问他们两个问题并记录下答案。首先问他们“什么是设计模式?”然后再问“说出你...

oschina
2014/03/11
9.1K
69
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
11/06
0
0
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
31分钟前
11
1
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
17
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
20
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
24
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部