文档章节

教为学:设计模式学习之路(一):设计模式的基本设计原则

若水尘埃
 若水尘埃
发布于 2014/09/02 11:42
字数 852
阅读 43
收藏 0

教为学:设计模式学习之路(一):设计模式的基本设计原则

前言

概念性的东西让人头痛,又不得不说。

好像设计模式也很大程度上也偏向概念,甚至在一般的做增删改查程序员中,这些东西不是特别重要。

但是如果需要阅读框架源代码,对设计模式的了解和熟悉又必不可少,以前听Jfinal的作者也常常抱怨java的开源框架有很多存在过度设计,个人想了解设计模式是想开启自己阅读开源框架源码打好一条路子。

我们对原则进行简单的描述,能不能完全理解并不重要,很多东西是没有办法在短时间内凭借别人的一点点描叙一下子弄懂的。

但是我们起码得有点点概念。

单一职责原则

定义

我在网上找到了两种定义:

  1. 一个类仅有一个导致它变化的原因。
  2. 一个对象只包含单一职责,并且该职责被完整的封装在一个类里面。

我的理解

第一个好像是其标准定义,个人感觉难以理解,第二个好像容易理解一些。就是我们常常说的高内聚,低耦合。

而整个定义最让人无法理清的是职责本身?

职责本身太抽象,以至于,我们该怎么界定职责本身。什么叫单一职责。职责的颗粒度是最大的问题。

开发-关闭原则

定义

一句话:

对扩展开放,对修改关闭。

我的理解

对于这一点的实现在于分离变化与不变化的部分,抽象在这里面起了很重要的作用,然后把可变化的因素封装起来。

里式替换原则

定义

在软件系统中一个可以接受基类的地方,肯定可以接受子类。

我的理解

其实就是这个原则就是最好实现开闭原则的方式之一。基类是本身的功能,关闭的部分,子类是扩展的部分,同时保证了基类不需要修改。

依赖倒置原则

定义

高层模块不依赖底层模块,两者都依赖接口。

抽象不应该依赖具体实现,具体实现应该依赖于抽象。

我的理解

其实有点java经验的,我们都明白这东西,我们太熟了。依赖注入控制反转,同样是解耦合的。

接口隔离法则

定义

客户端不应该依赖哪些不需要的接口

我的理解

某种意义上是单一职责原则的另外表达,不应该依赖于哪些大而全的接口,而是依赖于那些专而精的接口。

最小知识原则

定义

不要和陌生人说话。

我的理解

不和陌生人说话,意思就是我们只和朋友说话,所谓朋友就是所必须依赖的类。

结束

其实,就是我的读书笔记的总结。

可以看看研磨设计模式这本书。以及下面这篇博文。

设计模式原理与详解。

http://blog.csdn.net/hguisu/article/details/7571617

© 著作权归作者所有

共有 人打赏支持
若水尘埃
粉丝 4
博文 37
码字总数 26761
作品 0
无锡
私信 提问
加载中

评论(1)

JFinal
JFinal
设计原则是比设计模式重要得多的东西,设计原则是内功心法,设计模式是招势
写代码也有“套路”-谈谈设计模式

编程教室开了这么久,已经有很多人从完全零基础的小白成为了会写代码的菜鸟程序员,能够自己独立开发程序。不过到此阶段,常常会遇到瓶颈,感觉功能可以实现,但代码看起来有些别扭: 代码中...

crossin
02/22
0
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52717096 JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模...

Aduroidpc
2016/10/01
0
0
PHP设计模式(一):简介及创建型模式

我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设...

juhenj
2014/05/15
228
2
迈向大牛的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键...

一枚Sir
2015/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

声学所实验室的论文

https://hccl.ioa.ac.cn/output/papers/

shengjuntu
18分钟前
0
0
Mysql(Mariadb)数据库主从复制

Mysql主从复制的实现原理图大致如下: MySQL之间数据复制的基础是以二进制日志文件(binary log file)来实现的,一台MySQL数据库一旦启用二进制日志后,其作为master,它数据库中所有操作都...

linux-tao
今天
2
0
Mysql(Mariadb)数据库主从复制

Mysql主从复制的实现原理图大致如下: MySQL之间数据复制的基础是以二进制日志文件(binary log file)来实现的,一台MySQL数据库一旦启用二进制日志后,其作为master,它数据库中所有操作都...

Linux就该这么学
今天
2
0
Mysql(Mariadb)数据库主从复制

Mysql主从复制的实现原理图大致如下: MySQL之间数据复制的基础是以二进制日志文件(binary log file)来实现的,一台MySQL数据库一旦启用二进制日志后,其作为master,它数据库中所有操作都...

xiangyunyan
今天
2
0
Android 自定义Path贝塞尔曲线View实践——旋转的花朵

一、关于贝塞尔曲线 在工业设计方面贝塞尔曲线有很多用途,同样,在Android中,贝塞尔曲线结合Path类可以实现更复杂的图形,这里我们给一个案例,来实现一种旋转的花朵。对于贝赛尔曲线的理解...

IamOkay
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部