另一个维度看软件设计模式

目前大家一般谈论的设计模式是面向对象开发的一些经验总结.
谈设计模式前,先总结一下面向对象的三大基石
封装 (private, protect, public) ---- 加强内聚,减少函数间的参数
继承 (:: ) ---- 消除重复代码,重载和覆盖可以减少if
多态 (virtual) ---- 是减少代码中if,switch
(lamda 编程可以减少for ,迭代器也可以减少for的使用复杂度)

设计模式的核心是消除冗余,易于维护和扩展.
主要实现方法是抽象,分解,多态.
分离功能性代码和事务性代码.
以前很大精力在写功能性代码 (即如何实现), 其实写好事务性代码同样重要.
设计模式就是写好事务性代码的一些经验总结. 有点像把问题提升到一个更高的层次来解决.

今天我们从实现手段来划分一下各种设计模式
多态 — 模板模式
接口— 策略模式
单一责任 — 命令模式
封装 — 门市模式
组合向下 — 组合模式
组合向上 — 装饰者模式
组合平级 — 桥接模式

可以用来提高性能的有 生产者/消费者模式,原型模式,享元模式,代理模式

  1. 工厂模式
    工厂模式分为三类:简单工厂模式,一般工厂模式,抽象工厂模式。
    简单工厂模式,只有一个工厂类,所有对象通过调用工厂生成。工厂类里面有一个switch case 根据不同的参数,new 出不同的对象类。
    所有的对象类都是继承同一个父类。
    缺点:要生产新的对象类时,需要更改工厂类。违背了开闭原则。
    一般工厂模式,有多个工厂类,其继承至同一个父类,每生成一个产品调用不同的工厂类。不会违背开闭原则。
    抽象工厂模式,当一个工厂里要生成多余一种产品时,一般工厂模式,就演化为抽象工厂模式了。
    优缺点:增加工厂方便,增加产品不方便。

详细可见
https://www.cnblogs.com/yssjun/p/11102162.html

2.生产者消费者模式
不是建立在面向对象的基础上,是面向过程和并发设计经验总结一种设计模式。通过引入缓冲区的概念实现了,过程的解耦和等待。

详细可见
https://www.cnblogs.com/luego/p/12048857.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值