设计模式浅释,求拍砖,求指点~~

liu_F_87 2013-11-28 03:31:25
最近学习设计模式,工作中代码量不大,基本是理论上的瞎琢磨,请各路高手给些指点!
不废话,上正文:
////////////////////////////////////////////////////////

//简单工厂: switch case 出来不同的子类

//策略: 定义不同的算法分辨封装到不同的子类(反射)

//装饰: 包装,按照先后顺序一层一层,关键是被包装的和包装的有共同的接口

//代理: 实现一个相同的接口,替代源对象...伪装 ?还是便衣

//工厂方法: 通过工厂子类的多态性来创建不同的对象

//原型: 继承基类的自身拷贝接口,实现一个拷贝自己的方法,要注意深拷贝

//模板方法: 基类实现一个逻辑调用框架,子类实现框架中的具体操作

//外观: 组合,将细微的封装,留给外部整齐、精简的接口

//建造者: 抽象关键流程、子类实现具体流程操作,由指挥者来控制建造

//观察者: 抽象通知类,通知类中注册所有抽象被通知者,被通知者子类实现接收通知后的行为(委托)

//抽象工厂: 虚化整套工厂,整个工厂多态产生整套的产品

//状态: 封装每个状态下的行为到子类中--资源浪费

//适配器: 为功能相似、接口不同的类提供统一接口,改名字(接口标示符、返回值、参数)

//备忘录: 封装要保存的细节到类中,不暴露细节

//组合: 子实例和主实例共同接口,主实例知道方法做什么,子实例负责具体执行

//迭代: 跳过....不知道说点嘛,求补充

//单例: 单个实例......求补充

//桥接: 不同类别的对象互相交往,为了屏蔽类别内的细节差异统一接口

//命令: 将命令和命令对应的功能封装起来,对于命令的管理模块可以做功能扩充

//职责链: 拆分太多的if...else,将分支判断拆开封装到每个子类中

//中介者: 多个对象需要互相通信,可以通过一个中介者来管理,类似隔“山”打牛

//享元: 能抽出来的不光只有接口,还有信息、模块、数据等

//解释器: 没看懂,求补充....

//访问者: 通过虚函数多态访问不同的弱关联对象,具体操作方法通过访问者的函数重载来实现,省代码


类之间的关系
依赖: 参数、 临时使用
关联: 成员变量
聚合: 整体个体, 放入的个体
组合: 整体与个体共同生命周期,整体负责个体

继承: 不说了吧
实现: 不说了吧
////////////////////////////////////////////////////

单一职责 类要职责单一;
里氏替换 不要破坏继承体系;
依赖倒置 面向接口编程;
接口隔离 设计接口的时候要精简单一;
迪米特 降低耦合。降低类和类之间的“知道”
开闭 总纲,


///////////////////////////////////////////////////(下面是抄袭的,地址是:http://blog.csdn.net/zhengzhb/article/category/926691)

1. 开闭原则
对软件实体可以扩展,但是不可以修改。在一个系统中,对扩展是开放的,但是对修改是关闭的,一个好的系统可以再不修改源码的情况下扩展功能,满足对软件的新的需求。

2. 里式替换原则
子类必须能够替换它们的父类
举例:不符合的情况
(1)鸟<-----企鹅:企鹅不能完全替换为鸟类,因为鸟类有飞翔的动作

3. 依赖倒置原则
(1)具体就是要依赖于抽象,不要依赖于具体
(2)抽象不应该依赖于细节,细节应该依赖于抽象
(3)要针对接口编程,不要针对实现来编程

4. 接口隔离原则
使用多个专门的接口比使用单一的总接口要好
它包含了2层意思:
- 接口的设计原则:接口的设计应该遵循最小接口原则,不要把用户不使用的方法塞进同一个接口里。
如果一个接口的方法没有被使用到,则说明该接口过胖,应该将其分割成几个功能专一的接口。
- 接口的依赖(继承)原则:如果一个接口a依赖(继承)另一个接口b,则接口a相当于继承了接口b的方法,那么继承了接口b后的接口a也应该遵循上述原则:不应该包含用户不使用的方法。
反之,则说明接口a被b给污染了,应该重新设计它们的关系。

5. 单一职责原则
一个类应该只有一个引起它变化的原因

6. 迪米特原则
一个对象应该对其他对象有最少的了解,尽可能的低耦合。
...全文
1098 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱CPP 2013-12-14
  • 打赏
  • 举报
回复
//装饰: 包装,按照先后顺序一层一层,关键是被包装的和包装的有共同的接口 -- 也不一定吧,被包装和包装的接口应该是可以不同的。 依赖: 参数、 临时使用 -- 依赖是个统称,关联、集合、组合都认为是依赖。 关联: 成员变量 -- 成员变量是组合了,管理主要是指该类需要调用其他的类来完成其自身功能。 聚合: 整体个体, 放入的个体 -- 只引用其对象,不管理其生命周期; 组合: 整体与个体共同生命周期,整体负责个体 -- 负责其整个生命周期。
liu_F_87 2013-11-28
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
观察者的主题最好不要用抽象的吧,违背了多用组合少用继承的原则了。用接口优先。
先谢过~~ 我理解抽象是为了面向接口编程,或者说有一类东西都可以被调用,对外又要屏蔽细节,做成灵活可变的,如果实际场景不用灵活可变那就可以不用抽象了 还是感谢你的回复
Defonds 2013-11-28
  • 打赏
  • 举报
回复
观察者的主题最好不要用抽象的吧,违背了多用组合少用继承的原则了。用接口优先。
worldy 2013-11-28
  • 打赏
  • 举报
回复
不就是com对象吗?LZ想干嘛,创建一个新的体系架构?

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧