加载中...

设计模式——模式对比

看过GOF(CPP),大话设计模式(C#),headfirst(JAVA),这三种不同的语言写的设计模式,给我的感觉就是
看不明白,缺点就是 缺少模式之间的对比 + 离实际项目远。
反而一些别的书和博客更让人看的舒服。

1.少用基础类型,封装成类
2.避免过长的消息事件链,构建管理系统进行交互。不要自己交互

五大原则

里氏代换:子类替换基类,基类不要干活
依赖倒转:外部仅仅根据基类编写
迪米特:只跟接口打交道
接口分离:不同接口提供不同功能
最小知道:分层

分成三类

把if打造成策略群:策略状态组合职责链命令模板桥接建造者
保持原代码不变,通过包装提供编码体验:外观适配装饰访问者中介代理

单例原型迭代器享元

消除多个if 用策略/状态

把if条件封装成小类,直接调用小类的内容就可以。

以if条件作为产生小类,状态模式。划分依据是状态
以if内部实现作为小类,策略模式

适配器/代理/外观/装饰器/中介者/访问者:外观模式大家庭

适配器模式:对接口的转换,把a类接口转化为b类接口,改变接口的命名和形态
代理模式:原则上不改变接口的命名和形态。 不想外围改变本体。远程代理。本体是懒加载
装饰着模式:在一个装饰类里面放一个原始类的引用
访问者模式:给对象新增接口的时候,访问代码放到这个访问器

桥接和适配器

桥梁的作用。
桥接:类似策略模式,把具体策略从接口里面拿出来,达到灵活配置和拓展的作用。完备的管理模式。。 从思想上,基本等于,策略模式像雏形,桥接模式更复杂,把策略模式组合到接口类里面管理策略群。对外提供接口使用策略群的不同策略
适配器:接近外观模式,更好的包装已有的模块,不改变已有的代码。

建造者/工厂

工厂:针对对象创建的策略模式
建造者:针对初始化流程的策略模式
组合模式:用树来组织各种策略
职责链:以链表来组织各种策略

命令

命令:计算机按键指令。一个类里面包含了 数据+处理函数

工厂模式

简单工厂:把各地的new和带参数构造封装好类执行
工厂:把简单工厂ifelse封装到拆成小型代工厂,给小类做一个基类做抓手。然后把他注册到原来的简单工厂里面去。从外部来看和简单工厂一样
抽象工厂:小工厂特别多可以归并成一个类合并成大工厂,复制出别的大工厂。而这些大工厂都注册母公司处

访问者

把新增的接口不想写的原代码而是写到这个访问类里面去

posted @ 2024-06-28 08:22  liang302  阅读(14)  评论(0编辑  收藏  举报