《大话设计模式》ruby版代码:简单工厂模式

之前有看过《ruby设计模式》,不过渐渐的都忘记了。现在买了一个大话设计模式,看起来不是那么枯燥,顺便将代码用ruby实现了一下。

# -*- encoding: utf-8 -*-

#运算类
class Operation
attr_accessor :number_a,:number_b def initialize(number_a = nil, number_b = nil)
@number_a = number_a
@number_b = number_b
end def result
0
end
end #加法类
class OperationAdd < Operation
def result
number_a + number_b
end
end #减法类
class OperationSub < Operation
def result
number_a - number_b
end
end #乘法类
class OperationMul < Operation
def result
number_a * number_b
end
end #除法类
class OperationDiv < Operation
def result
raise '除数不能为0' if number_b == 0
number_a / number_b
end
end #工厂类
class OperationFactory
def self.create_operate(operate)
case operate
when '+'
OperationAdd.new()
when '-'
OperationSub.new()
when '*'
OperationMul.new()
when '/'
OperationDiv.new()
end
end
end oper = OperationFactory.create_operate('/')
oper.number_a = 1
oper.number_b = 2
p oper.result

这样写的好处是降低耦合。

比如增加一个开根号运算的时候,只需要在工厂类中添加一个分支,并新建一个开根号类,不会去动到其他的类。

上一篇:Linux (Deppin ,Ubuntu )开发环境配置,VUE & dotnetcore 解决 yarn 找不到问题


下一篇:xshell远程终端操作Ubuntu server安装LAMP环境之最详细笔记之二PHP开发环境配置