之前有看過《ruby設(shè)計模式》,不過漸漸的都忘記了?,F(xiàn)在買了一個大話設(shè)計模式,看起來不是那么枯燥,順便將代碼用ruby實現(xiàn)了一下。
簡單工廠模式:
# -*- encoding: utf-8 -*-
#運(yùn)算類
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 '除數(shù)不能為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
這樣寫的好處是降低耦合。
比如增加一個開根號運(yùn)算的時候,只需要在工廠類中添加一個分支,并新建一個開根號類,不會去動到其他的類。
工廠方法模式:
# -*- encoding: utf-8 -*-
#運(yùn)算類
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 '除數(shù)不能為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
相比于簡單工廠模式,這里的變化是移除了工廠類,取而代之的是具體的運(yùn)算工廠,分別是加法工廠、減法工廠、乘法工廠和除法工廠。
您可能感興趣的文章:- 設(shè)計模式中的觀察者模式在Ruby編程中的運(yùn)用實例解析
- 實例解析Ruby設(shè)計模式開發(fā)中對觀察者模式的實現(xiàn)
- 深入剖析Ruby設(shè)計模式編程中對命令模式的相關(guān)使用
- Ruby設(shè)計模式編程中對外觀模式的應(yīng)用實例分析
- 詳解組合模式的結(jié)構(gòu)及其在Ruby設(shè)計模式編程中的運(yùn)用
- 設(shè)計模式中的模板方法模式在Ruby中的應(yīng)用實例兩則
- 實例解析Ruby設(shè)計模式編程中Strategy策略模式的使用
- 實例講解Ruby使用設(shè)計模式中的裝飾器模式的方法
- Ruby設(shè)計模式編程中使用Builder建造者模式的實例
- 詳解Ruby設(shè)計模式編程中對單例模式的運(yùn)用
- Ruby設(shè)計模式編程之適配器模式實戰(zhàn)攻略
- Ruby使用設(shè)計模式中的代理模式與裝飾模式的代碼實例
- 解析proxy代理模式在Ruby設(shè)計模式開發(fā)中的運(yùn)用