[design pattern](0) 概述
一 引语
大家好,这是我第一次在网上写文章。从学校毕业一年多,感觉还有很多东西需要去学习。最近正在学习设计模式,希望可以在博客园把我学习的知识记录下来,能够和大家一起讨论设计模式相关的话题,也希望这个博客以后可以一直更新。由于本人是一名java程序员,所以之后的例子会以java程序去编写。本章节主要想讲一讲,学习设计模式需要的一些相关的知识。
二 相关的知识
在学习设计模式的之前,我们需要了解以下的知识:
- 简单的uml的知识
- 了解6大设计原则:“开-闭”原则、里氏替换原则、依赖倒转原则、接口隔离原则、单一职责原则、迪米特法则
三 UML
UML介绍
Unified Modeling Language(UML)译为统一建模语言,他是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。(本段来自百度百科)
UML基础知识
要学习设计模式,我们需要了解以下知识点:
- 类的表示

上面的图展示了使用UML怎样去表示一个Class。下面我们就来介绍Class图的组成部分:
1.红色框:表示Class的作用域,作用域符号分为三种
+:public
-:private
#:protected
2.黄色框:表示属性名和方法名
3.绿色框:表示方法的参数
4.深蓝框:表示属性的类型和方法的返回类型
5.浅蓝框:表示默认值
- 接口的表示

接口的表示比类的表示多了一个<<interface>>,其他就没有什么多说的了。
- 继承关系(extends)

继承关系是使用实线空心三角箭头表示的
- 实现关系(implements)

实现接口使用虚线空心三角箭头表示
- 有一个关系(has)

有一个关系使用普通箭头表示
- 依赖关系(Dependency)

依赖关系使用虚线箭头表示
对于UML的知识我们就介绍到这里,这些基础的知识已经够我们介绍设计模式了。
四 设计原则
上面我们介绍了UML的一些基础知识,接下来我们来介绍一下设计模式的六大设计原则。
“开-闭”原则
定义:一个软件实体应该对扩展开放,对修改关闭。
里氏替换原则
定义:所有引用基类的地方必须能够透明的使用其子类的对象
依赖倒转原则
定义:抽象不应该依赖于细节,细节应该依赖于抽象。即,要针对接口编程,而不是针对实现编程
接口隔离原则
定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口
单一职责原则
定义:一个类只负责一个功能领域中的相应职责,即一个类中能引起它改变的因素只有一个
迪米特法则
定义:一个软件实体应该尽可能少的与其他实体发生相互作用,不要和“陌生人”说话,只与你的直接朋友通信
五 设计模式类别
设计模式的个数有很多,这里我们对常用的23种设计模式进行分类。那么它们大致可以分为三类。
- 创建型模式
代表:Simple Factory、Factory Method、Abstract Factory、Builder、Prototype、Singleton
- 结构型模式
代表:Adapter、Bridge、Composite、Decorator、Facade、Flyweight、Proxy
- 行为型模式
代表:Interpreter、Template Method、Chain of Responsibility、Command、Iterator、Mediator、Memento、Observer、Sate、Strategy、Visitor
六 相关书籍介绍
入门书籍推荐: head first 设计模式
其他书籍推荐: java与模式 、 GOF
[design pattern](0) 概述的更多相关文章
- Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern
Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming.这其中 ...
- Null Object Design Pattern (Python recipe)
Null Object 个人感觉非常有用.也是在review公司其他同事写代码的时候看到. 当时使用了flask的request全局请求变量g,然后使用了g.x保存了一个东西. 当时在view代码读取 ...
- Thinking In Design Pattern——MVP模式演绎
原文<Thinking In Design Pattern——MVP模式演绎>不知为何丢失了,故重新整理了一遍. 目录 What Is MVP Domain Model StubRepos ...
- [Java] Design Pattern:Code Shape - manage your code shape
[Java] Design Pattern:Code Shape - manage your code shape Code Shape Design Pattern Here I will intr ...
- 说说设计模式~大话目录(Design Pattern)
回到占占推荐博客索引 设计模式(Design pattern)与其它知识不同,它没有华丽的外表,没有吸引人的工具去实现,它是一种心法,一种内功,如果你希望在软件开发领域有一种新的突破,一个质的飞越,那 ...
- 设计模式(Design Pattern)系列之.NET专题
最近,不是特别忙,重新翻了下设计模式,特地在此记录一下.会不定期更新本系列专题文章. 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用 ...
- [转]Design Pattern Interview Questions - Part 4
Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, te ...
- [转]Design Pattern Interview Questions - Part 2
Interpeter , Iterator , Mediator , Memento and Observer design patterns. (I) what is Interpreter pat ...
- [转]Design Pattern Interview Questions - Part 3
State, Stratergy, Visitor Adapter and fly weight design pattern from interview perspective. (I) Can ...
随机推荐
- Java基础/阿里巴巴Java开发手册
阿里巴巴Java开发手册 序号 文档名及下载地址 1 阿里巴巴Java开发手册v1.2.0 2 <阿里巴巴Java开发手册>(终极版) 为什么阿里巴巴禁止工程师直接使用日志系统(Log4j ...
- elementUi--->实现上传图片效果(upload+formData)
现在谈一下elelmentui中使用Upload 上传通过点击或者拖拽上传文件(图片) <el-upload name="multfile" //上传的文件字段名 cl ...
- xmake v2.1.9版本发布,增加可视化图形菜单配置
此版本主要增加xmake f --menu实现用户自定义图形菜单配置,界面风格类似linux的make menuconfig: [图片上传失败-(image-505bc0-1517795319124) ...
- <每日一题> Day6:HDU递推专题完结
原题链接 这是我自己Clone的专题,A,B题解昨天发过了 C:参考代码: /* 很容易我们可以手推出n = 1, 2, 3时的情况,我们假设前n - 1 列已经放好,方法有dp[n - 1]种,第n ...
- STM32启动地址设置及从非0x800000 开始调试程序
首先设置程序的启动地址,STM32默认的启动地址是从0x8000000开始的,现在我要设置程序向后偏移10K地址,也就是从0x8002800启动. 需要分两步完成上面操作: 一.Keil MDK设置: ...
- [Codeforces 1199D]Welfare State(线段树)
[Codeforces 1199D]Welfare State(线段树) 题面 给出一个长度为n的序列,有q次操作,操作有2种 1.单点修改,把\(a_x\)修改成y 2.区间修改,把序列中值< ...
- httplib模块:(一个相对底层的http请求模块)
httplib是一个相对底层的http请求模块,期上有专门的包装模块,如urllib内建模块,goto第三方模块,但是封装的越高就约不灵活,比如urllib模块里的请求错误是就不会返回结果页的内容,只 ...
- 帝国CMS自定义页面的添加与目录式链接的处理
需求: 1.将某一本地前端自定义页面模板,导入到帝国系统,应用到网站 2.将导入的页面在站点中打开为目录式链接 www.abc.com/softlink/ 环境: 1.windows服务器 2.帝国C ...
- HTML创建链接框
使用CSS样式创建一个漂亮的链接框吧 <!DOCTYPE html> <html> <head> <style> a:link,a:visited { ...
- [书接上一回]在Oracle Enterprise Linux (v5.7) 中安装DB - (4/4)
选择自己创建的安装数据库路径. Sample Schemas 打钩. 调整内存大小. 选择官方建议的字符集编码. 是否创建创建的脚本,如需要请打钩. 脚本生成成功. 创建成功,如需要,则可以管理数据库 ...