设计模式的思考(二)

/*********************************创建型模式*********************************************/

如何创建或使用类(二者只居其一)

工厂模式、抽象工厂模式和建造者模式都涉及到设计用于创建目标对象的类;

单例模式、原型模式涉及到目标对象的改造。

@@如何创建对象?-----如何定义变量?有的时候要涉及类的重构。

---------------------------------------

单例模式:只需要创建一个对象

工厂模式:创建一种对象

抽象工厂模式:在一处创建相关对象

建造者模式:创建经相同步骤,但每步骤内容又不同的一类对象

原型模式:创建一系列只有细微差别的同类对象。

/******************************结构模式****************************************************************/

如何协调类B与类A之间的关系?

@@定义几个类?----要重构吗?拆和添

@@解决是否要建立新的类,重用以前的类问题(继承并不是一个好方法),如何减少类过多的问题。

----------------------------------------

适配器模式Adaptor:(已有2个类,加了一个类)在两个类之间加一个类,使等A类不经修改使用B类

桥接模式Bridge:(拆成2个类)在A组类和B组类之间加一个类C,或将C类吸收到A类,使得A组类和B组类组合出更多的类。(AB之间组合类太多了)

组合模式Composite(调整2个类):实现树形结构时,将叶子类A设计成没有节点的节点类B ,化不同为同!(m,n==>a,A)

装饰器模式Decorato(已有1个类):通过B类给A类添加新特色而不用从A组类产生新的类-->使A类对象为B类新对象的成员!(a=>A(a))

外观模式Facade(已有2组类,加了一个类):A类和B组类交互,改为A类和C类,C类与B组类交互,简化关系(委托人?),A为一组效果更好(这成代理模式?)。(1-N==>1-1-N)

享元模式Flyweight:A类共性太多,拆成两个两部分,变化少的和变化多的(10==>{1,9})

代理模式Proxy(已有2个类,加了一个类):若B类要使用A类,则A类必须修改,添加C类,B类通过C类访问A类(代购?)(1-1==>1-A-1)

/***************************************行为模式**************************************************/

调用者如何找到执行者,执行者在哪?调用者和执行者如何设计?

协调调用者B类和执行者A类之间的关系---如何设计类

@@类的结构是什么样的?-一般涉及到类的结构设计

@@如何避免过多的if-else

@@数据有了,谁来处理它?如何找到接盘侠?

------------------------------------------------------

责任链模式:A类带着后续执行者(需要一系列的执行者),执行者中带着下一个可能的执行者(硬编难改!)

命令模式:将执行的操作作为一个整体(对象){函数指针很像},调用者和执行者之间不宜打死结!

解释器模式:处理复杂,建立脚本,脚本如何解释?如何设计解释器(编译器)(不熟悉很正常)

迭代器模式:一般对象都是将数据与数据处理相结合,这是将数据与数据的遍历相分离(识实务)--原则是原则,最关键的原则是要解决问题!

中介者模式:有点像外观模式,多个类之间交互,加一个中介。(N<->N==》N<->1<->N)

备忘录模式:实现undo(),保存一个曾经的状态

观察者模式(订阅模式,模型视图模式):被观察者更新,观察者也更新,联动==>MVC

状态模式:多状态转换,状态机,状态与执行者绑定!

策略模式:策略或算法分装,按需

模板方法模式:子类继承

访问者模式:同一组数据让不同的对象处理,对处理对象抽出来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值