创建模式、结构模式及行为模式

谁在什么地方提供什么功能?

要设计几个类?这些类各个是什么功能?相互间的关系是什么?

创建模式指的是对象那么多,怎么把它"生"出来?生几个?从这个角度上来说数组就是一种另类的创建模式。主要着眼于如何重用已有的代码和设计可重用的代码!

结构模式指的是应该定义多少个对象,多少个类,类和对象间要如何组织。比如说全局变量,我们可以以基本数据类型的形式定义,另一种就是将其按照一定的标准进行分类,定义"结构"。主要着眼与如何扩充代码!

行为模式指业务如何处理,先干什么,再干什么。但这部分内容和结构显然是密切相关的:同样是买房子,找中介和不找中介完全是两个流程。行为模式重点是解决代码中if-else过多的问题。这可能是最复杂的内容。主要着眼于如何减低代码间的耦合和代码结构的复杂性。

5种创建模式,7种结构模式,11种行为模式

设计软件就像写文章,架构是谋篇布局,设计模式是段落(章节)安排,习惯法是遣词造句!

他人的解释

  • Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code.

  • Structural patterns explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.

  • Behavioral patterns take care of effective communication and the assignment of responsibilities between objects.

从另外一个角度思考:---C语言

什么类不类的,对象不对象的,一直到最底层!

创建模式是关于如何定义变量的,结构模式是关于定义自定义数据类型的,行为模式是关于定义函数。

实现这些模式要实现适当的结构和函数,但是总体来看这些代价是值得的,提升了系统的柔性和效率(flexible &efficient)。

1.创建模式:--主要解决变量定义问题

比如要处理学生的信息,如成绩语数外,我们可以定义3个变量,一行即可。如果要处理1万个学生的信息,不仅是语数外,还有其他信息,如姓名、性别、学校等,当然还有姓名,那每个学生有7个数据项,1万个学生要定义7万个变量,这时候按简单变量的方式定义的话就把自己搞死了,可以将学生的信息定义一个结构,然后定义一个有1万个元素的数组,这也是一种创建模式。

变量的定义包括2个内容:命名及初始化。

  • 工厂模式用于生成一类变量;
  • 抽象工厂模式可以生成多类变量;
  • 建造者模式可以生成复杂变量,涉及大量参数:将初始化过程分成多个步骤;
  • 原型模式用于批量生成一批对象(游戏中的小兵,炮灰都类似):生成一个,复制、拷贝,修改;
  • 单例模式确保只生成一个对象:用静态变量。

2.结构模式:---主要解决函数和结构体定义问题--》如何在减少不必要的定义同时,保持效率和灵活性。

  • 适配器模式:加了一个中间层(适配器),别人变了我可以不变,我变了,别人可以不变
  • 桥接模式:变与不变分开,比如红色铅笔,蓝色钢笔,黑色毛笔等等,不如只定义笔和颜色,然后进行组合;
  • 组合模式:处理树型结构,节点和叶子是不同的,但是可以看做一样来处理,形式简洁
  • 装饰器模式:俄罗斯套娃,
  • 享元模式:精兵简政,共用;像组织中的司机,原来每位高管有一位对应的司机,现在几位高管用一个司机;类似的还有将重复的代码组织成函数,其他各处调用即可
  • 代理模式:都经过它处理,其余你就不管了;有点像现在的医药集采模式,其他的还有,如“跑腿的”;
  • 外观模式:都经过它转交,它自己不处理交给别人处理,内部的复杂关系我不管;有点像每个单位的门房的作用,原来外部人员办事乱糟糟,现在把材料交给门房即可,过段时间来找他问结果。

3.行为模式:--解决函数问题--》简化函数结构,减少if-else结构;简化调用关系。

  • 中介者模式:
  • 访问者模式:
  • 观察者模式:
  • 责任链模式:首问负责制,且确保问题一定会有人处理的(外观模式?)
  • 模板模式:
  • 备忘录模式:
  • 状态机模式:状态机负责执行,状态负责处理机状态的转换,非常常用和典型
  • 解释器模式:正则表达式的处理就是一种典型的解释器方法,对不同的文本处理提炼了一个解释器,先有解释器处理后再根据解释的结构进行处理;类似与高级语言处理过程
  • 迭代器模式:类似STL的数据结构处理方式,提供一个迭代器,将非线性的结构变为线性的,每一项处理有自己的前序和后继
  • 命令模式:
  • 策略模式:统一的接口,典型的就是linux内部设备驱动。接口是一致的,但是具体的行为有变化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值