导图社区 java常用设计模式
java语言的常用设计模式总结,反复看、看反复,反复理解、反复实践。
电商商城分几个基础模块:商品信息、会员档案信息、订单信息、积分商城。
小程序订单业务和开发路线的简单梳理,理清思路,事半功倍。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
亡羊补牢
外婆与姥姥的区别
css
CSS
计算机操作系统思维导图
计算机组成原理
常用设计模式
行为型
责任链模式
将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会
观察者模式
别名
发布-订阅(Publish/Subscribe)模式
模型-视图(Model/View)模式
源-监听器(Source/Listener)模式
从属者(Dependents)模式
定义
对象间的一对多的依赖关系
实现方式
a) 角色抽象类(提供对观察者的添加,删除和通知功能)
b) 角色具体类,实现a,维护一个c的集合(对角色抽象类的实现)
c) 观察者抽象类(被角色通知后实现的方法)
d) 观察者实现类,实现c(多个)
JDK提供了对观察者模式的支持, 使用Observable类和Observer接口
模板模式
定义一个算法结构,而将一些步骤延迟到子类实现
命令模式
将命令请求封装为一个对象,使得可以用不同的请求来进行参数化
解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器
迭代器模式
一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构
中介者模式
用一个中介对象来封装一系列的对象交互
策略模式
定义一系列算法,把他们封装起来,并且使它们可以相互替换
与工厂模式异同
实例化一个对象的位置不同
对工厂模式而言,实例化对象是放在了工厂类里面
策略模式实例化对象的操作在调用的地方
本质都是继承与多态
状态模式
允许一个对象在其对象内部状态改变时改变它的行为
备忘录模式
在不破坏封装的前提下,保持对象的内部状态
访问者模式
封装一些作用于某种数据结构中的各种元素,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作
面向过程
生产者/消费者模式
定义:产生数据的模块是生产者,处理数据的模块是消费者,两者之间有个缓冲区
优点
解耦:由于有缓冲区的存在,生产者和消费者之间不直接依赖,耦合度降低
支持并发:由于生产者与消费者是两个独立的并发体,他们之间是用缓冲区作为桥梁连接,生产者只需要往缓冲区里丢数据,就可以继续生产下一个数据,而消费者只需要从缓冲区了拿数据即可,这样就不会因为彼此的处理速度而发生阻塞
支持忙闲不均:缓冲区还有另一个好处。如果制造数据的速度时快时慢,缓冲区的好处就体现出来 了。当数据制造快的时候,消费者来不及处理,未处理的数据可以暂时存在缓冲区中。 等生产者的制造速度慢下来,消费者再慢慢处理掉
应遵循的规则
1. 生产者仅仅在仓储未满时候生产,仓满则停止生产
2. 消费者仅仅在仓储有产品时候才能消费,仓空则等待
3. 当消费者发现仓储没产品可消费时候会通知生产者生产
4. 生产者在生产出可消费产品时候,应该通知等待的消费者去消费
结构型
将几个对象组织成一个结构
适配器模式
将一个类的方法接口转换成客户希望的另外一个接口
装饰器模式
动态的给对象添加新的功能
桥接模式
将抽象部分和它的实现部分分离,使它们都可以独立的变化
外观模式
对外提供一个统一的方法,来访问子系统中的一群接口
代理模式
就是给一个对象提供一个代理,并由代理对象控制对原对象的引用
过滤器模式
这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来
组合模式
将对象组合成树形结构以表示“”部分-整体“”的层次结构
享元模式
通过共享技术来有效的支持大量细粒度的对象
创建型
创建一个对象
单例模式
某个类只能有一个实例,提供一个全局的访问点
将被实现的类的构造方法设计成private的
添加此类引用的静态成员变量,并为其实例化
在被实现的类中提供公共的CreateInstance函数, 返回实例化的此类,就是b中的静态成员变量
工厂模式
建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例
缺点:如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则
抽象工厂模式
围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂
建造者模式
封装一个复杂对象的构建过程,并可以按步骤构造
原型模式
通过复制现有的实例来创建新的实例
原则
就是多用接口/抽象类,从而增加代码的可扩展性(减少修改代码)。降低模块间的依赖和联系 体现了OOP的模块化、可扩展性等特征
目的
编程时,有意识地面向接口编程,多用封装、继承、组合、多态等OOP思想,而不仅仅是死记几类设计模式