图解设计模式

1 篇文章 0 订阅
1 篇文章 0 订阅

软件设计原则

(1)单一职责:一个模块只有一个职责

(2)开闭原则:对新需求,无需修改逻辑,只需扩展即可。

(3)里氏替换:用基类设计的流程,子类可以在其上畅通的运行。

(4)依赖倒转:模块间不依赖模块的细节,只依赖模块的抽象。

(5)接口隔离:接口间不依赖。

(6)迪米特法则:只需知道很少的信息,即可调用对方。

(7)合成复用法则:多用组合,少用继承。

设计模式,是尽可能满足设计原则的、适用于特定场景的、相对稳定的软件架构。

1. 单例模式

类实例有且只有一个。根据实例的创建时机,又可分为懒汉式和饿汉式。

2. 工厂模式

简单工厂

(1)只有一个工厂。

(2)工厂可以生产不同产品。

(3)客户告诉工厂生产什么即可。

工厂方法

 (1)有多个工厂。

(2)每个工厂只能生产一种产品。

(3)客户需要先选择工厂,然后通知其生产即可。

复杂工厂模式

(1)有多个工厂。

(2)每个工厂可以生产多种产品。

(3)客户需要先选择工厂,然后告诉工厂生产什么。

模式PK:

(1)当复杂工厂只有一个工厂时,复杂工厂退化为简单工厂。

(2)当复杂工厂的每个工厂只能生产一种产品时,复杂工厂退化为工厂方法。

3. 代理模式

用户只需告诉代理需求,无需关注代理如何完成。 

4. 策略模式

 用户告诉策略者自己的需求倾向,策略者根据倾向,给出不同的策略。

 模式PK:

(1)代理模式侧重于屏蔽完成工作的细节。

(2)策略模式侧重于策略查询。

(3)代理模式通常也做着策略模式的活。

5. 观察者模式

(1)观察者把自身的需求和“联系方式”告知信息源。

(2)信息源监测到所需的信息有变化时,告知对应的观察者。

6. 装饰者模式

 当有新需求时,在原有基础上,“装饰”上新的元素。

 7. 适配器模式

 适配器可以将不同的接口转为同一种接口。

8. 命令模式

(1)用户只需告诉控制器做什么。

(2)控制器按着约定的格式,向对应设备发送命令包。

9. 外观模式

 将原有的复杂的用法封装为简洁的用法。

10. 模板方法

(1)先设计一个模板。

(2)公共部分固定化在模板里。

(2)可定制部分先定义好接入要求,然后在模板中预留接入接口。

11. 迭代器

(1)每个迭代器元素中均有一个适配层,屏蔽不同对象的差异。

(2)迭代器元素相连,通过 next() 接口可获取下一个迭代器元素。

模式PK:

把适配器模式连接起来,就是迭代器模式。

12. 组合模式

(1)每个元素均有一个适配器,以屏蔽不同对象的差异。

(2)同等级别的元素放在同一级上。

(3)低一级的元素,挂在高一级的元素上。

模式PK:

迭代器将适配器模式“串”起来,而组合模式是将适配器模式以“树形”结构连接。

13. 状态机

(1)有多个状态。

(2)每个状态有所能支持的操作。

(3)每个状态被“操作”后,跳到新的状态(也可能跳回自身)。

14. 生产者和消费者模式

 

(1)只要队列没有满,生产者只管向队列里放。

(2)只要队列没有空,消费者只管从队列里取。

(3)生产者和消费者无需直接通信。 

15. MVC 模式

(1)用户操作 View。

(2)View 通知 Control 模块:用户有操作。

(3)Control 模块改变 View 的显示,同时告知 Model 模块:用户有操作。

(4)Model 模块处理完用户的操作后,通知 View:我处理完了。

(5)View 模块向 Model 模块发出请求:把你的状态信息给我。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值