简单工厂模式代理示例
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 = 2
oper.number_b = 2
p oper.result
这个是简单工厂模式的一个实现形式,如果要增加一个算法,比如开根号,只要在工厂类中添加一个分支,并且建立一个开根号类。