首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

ruby设计方式-策略模式

2012-10-08 
ruby设计模式--策略模式模板方式模式将变化与不变进行了分离,使得编写的代码更具有灵活性,但是缺点是采用

ruby设计模式--策略模式

模板方式模式将变化与不变进行了分离,使得编写的代码更具有灵活性,但是缺点是采用面向对象继承的特性来完成模式的开发,在实际调用过程当中具有一定的耦合性,面对这种情况,可以采用策略模式来进一步的提升代码的灵活性。

策略模式所根据的设计原则依然是将不变与变化进行分离,与模板方式模式不同的是采用组合和聚合方式来代替集成,这样的话使得具体实现完全被隐藏,并且在程序运行的时候能够更加灵活的对策略进行更改,使得程序更加灵活。

?

class Car    attr_accessor :name, :door_size, :concrate_car    def initialize(name, door_size, &proc)    @name = name    @door_size = door_size    @concrate_car = proc  end    def car_break    break_before    @concrate_car.call    break_after    end    def break_before    p "called super method(before)"  end    def break_after    p "called super method(after)"  end    def do_break    raise "called super do_break"  end  endferrari = lambda do   p "using hand to toggle the selector"endlamborghini = lambda do   p "wring the button"endcar = Car.new "name", 4, &lamborghinicar.car_breakcar = Car.new "name", 4, &ferraricar.car_break
?

?

通过ruby闭包,形成proc对象,即把以前的类定义转变成proc定义,该proc对象便是strategy,从编程的角度来说,这样接大大的减少了编码量,使其模式变得更加简答易懂,同样也遵守开闭原则,同样使得程序具有灵活性,可配置性。

补充:模式具有3个特性,模式名称,模式应用场景(需要解决的实际问题),模式的具体实现。模式的作用:复用,封装变化。模式:为一个普通存在的实际问题提供统一的解决方案

热点排行