文章摘要
这篇文章介绍了使用Ruby编程实现的运算工厂设计模式。文章通过定义一个基类`Operation`,并将其继承到加法、减法、乘法和除法类中,展示了如何用继承实现不同的运算逻辑。同时,文章还通过`FactoryModule`引入了工厂模式,定义了多个工厂类(如`AddFactory`、`SubFactory`等),这些工厂通过包含`FactoryModule`动态生成相应的运算实例。最后,文章通过示例代码展示了如何使用这些工厂类和运算类进行实际操作。
# -*- 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
module FactoryModule
def create_operation
end
end
#加法工厂
class AddFactory
include FactoryModule
def create_operation
OperationAdd.new
end
end
#减法工厂
class SubFactory
include FactoryModule
def create_operation
OperationSub.new
end
end
#乘法工厂
class MulFactory
include FactoryModule
def create_operation
OperationMul.new
end
end
#除法工厂
class DivFactory
include FactoryModule
def create_operation
OperationDiv.new
end
end
factory=AddFactory.new
oper=factory.create_operation
oper.number_a=1
oper.number_b=2
p oper.result