Java设计模式总结
什么是设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。通过对这些设计模式的合理使用能够是我们的系统更加的健壮。
六大设计原则
| 设计原则 | 简单说明 |
|---|---|
| 单一职责 | 一个类只负责一项职责 |
| 里氏替换原则 | 子类可以扩展父类的功能,但不能改变父类原有的功能 |
| 依赖倒置原则 | 要依赖于抽象,不要依赖于具体,核心思想是==面向接口编程== |
| 接口隔离原则 | 建立单一接口,不要建立庞大臃肿的接口, 尽量细化接口,接口中的方法尽量少 |
| 迪米特法则 (最少知道原则) |
一个对象应该对其他对象保持最少的了解 |
| 开闭原则 | 对扩展开放,对修改关闭 |
设计模式的分类
| 类别 | 说明 |
|---|---|
| 创建型模式 | 对象实例化的模式,创建型模式用于解耦对象的实例化过程。 |
| 结构型模式 | 把类或对象结合在一起形成一个更大的结构。 |
| 行为型模式 | 类和对象如何交互,及划分责任和算法。 |
设计模式的具体实现
1.创建型模式
都是用来帮助我们创建对象的!
2.结构型模式
关注对象和类的组织
|模式|地址 |
|--|:--|
| 代理模式| https://dpb-bobokaoya-sm.blog.csdn.net/article/details/86484887|
|适配模式|https://dpb-bobokaoya-sm.blog.csdn.net/article/details/87949811 |
|桥接模式|https://dpb-bobokaoya-sm.blog.csdn.net/article/details/87951434 |
|组合模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/88567000 |
|装饰模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/88214447 |
|外观模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/88569991 |
|享元模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/88586998 |
3.行为型模式
关注系统中对象之间的相互交换,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11中模式
|模式|地址 |
|--|:--|
| 责任链模式| https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89077040|
|命令模式|https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89115420 |
|解释器模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89367802 |
|迭代器模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89077229 |
|中介者模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89077718 |
|备忘录模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89367699 |
|观察者模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/87483479 |
|状态模式|https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89345271 |
|策略模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/88222305 |
|模板方法 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/88210977 |
|访问者模式 |https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89367828 |
Java设计模式总结的更多相关文章
- java设计模式- (1)单例模式
参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式. 单例模式(Singleton Pattern)是 Java中最简单的设计模式之一.这种类型的设计 ...
- JAVA 设计模式 桥接模式
用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化. 桥接模式是一种结构式模式. 结构
- java设计模式 策略模式Strategy
本章讲述java设计模式中,策略模式相关的知识点. 1.策略模式定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户.策略模式属于对象的 ...
- Java设计模式之行为型模式
行为型模式共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 策略模式:策略模式的决定权在用户,系统本身提供不同 ...
- Java设计模式(三) 抽象工厂模式
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...
- Java设计模式(十二) 策略模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...
- Java设计模式(二) 工厂方法模式
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...
- Java设计模式(一) 简单工厂模式不简单
摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...
- Java设计模式(十三) 别人再问你设计模式,叫他看这篇文章
原创文章,转载请务注明出处 OOP三大基本特性 封装 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类操作,对不可信的进行信息隐藏. 继承 继承是指这样一种能力,它可以使 ...
- JAVA 设计模式 状态模式
用途 状态模式 (State) 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式是一种行为型模式. 结构
随机推荐
- Android第三次作业
制作音乐播放器 实现的功能: 歌曲的播放.暂停.停止.上一首.下一首.歌单列表的显示(获取本地歌曲). 成品图: 功能代码实现: 实现歌曲的播放.暂停.停止.上一首.下一首: public void ...
- R语言读入数据库的中英名词互译测试并计分脚本(考试用)
1. 分子生物学中英文.csv,输入文件,两列,以tab键分隔的txt文本,没有列名 2. 错误的名解.csv, 如果在测试中拼写错误,会写出到这个文件,可用这个容易犯错的名词进行新的测试 3. 注意 ...
- linux-Vim命令合集
Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...
- flume安装
1.flume安装 将压缩包减压到当前目录 tar -zxf apache-flume-1.8.0-bin.tar.gz 配置环境变量 编辑当前目录中的 .bashrc 文件(这影响当前用户的环 ...
- Consider defining a bean named 'entityManagerFactory' in your configuration解决办法
错误信息: *************************** APPLICATION FAILED TO START *************************** Descriptio ...
- 安卓开发笔记(十六):'Request(okhttp3.Request.Builder)' has private access in 'okhttp3.Request
当出现了'Request(okhttp3.Request.Builder)' has private access in 'okhttp3.Request的错误的时候,实际上是我们在写代码的时候少打了 ...
- android studio 撤销和恢复
我的Android studio版本是2.2版本 1.Ctrl+z是撤销快捷键 2.如果Ctrl+z 掉的内容,又反悔了,快捷键为:Ctrl + Shift + z.
- FFmpeg开发实战(五):FFmpeg 抽取音视频的视频数据
如何使用FFmpeg抽取音视频的视频数据,代码如下: // FFmpegTest.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include ...
- 私有云的难处—为什么需要CloudEngine?
私有云的难处 ——我们为什么需要 CloudEngine? 郑昀 创建于2016/7/31 最后更新于2016/8/3 关键词: 容器.Docker.OpenStack.虚拟机.私有云.Mesos.配 ...
- [Swift]LeetCode238. 除自身以外数组的乘积 | Product of Array Except Self
Given an array nums of n integers where n > 1, return an array outputsuch that output[i] is equa ...