主頁(yè) > 知識(shí)庫(kù) > Ruby中使用設(shè)計(jì)模式中的簡(jiǎn)單工廠模式和工廠方法模式

Ruby中使用設(shè)計(jì)模式中的簡(jiǎn)單工廠模式和工廠方法模式

熱門標(biāo)簽:語(yǔ)音系統(tǒng) 百度AI接口 電話運(yùn)營(yíng)中心 Win7旗艦版 呼叫中心市場(chǎng)需求 客戶服務(wù) 硅谷的囚徒呼叫中心 企業(yè)做大做強(qiáng)

之前有看過(guò)《ruby設(shè)計(jì)模式》,不過(guò)漸漸的都忘記了?,F(xiàn)在買了一個(gè)大話設(shè)計(jì)模式,看起來(lái)不是那么枯燥,順便將代碼用ruby實(shí)現(xiàn)了一下。

簡(jiǎ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

這樣寫的好處是降低耦合。
比如增加一個(gè)開(kāi)根號(hào)運(yùn)算的時(shí)候,只需要在工廠類中添加一個(gè)分支,并新建一個(gè)開(kāi)根號(hào)類,不會(huì)去動(dòng)到其他的類。

工廠方法模式:

# -*- 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

相比于簡(jiǎn)單工廠模式,這里的變化是移除了工廠類,取而代之的是具體的運(yùn)算工廠,分別是加法工廠、減法工廠、乘法工廠和除法工廠。

您可能感興趣的文章:
  • 設(shè)計(jì)模式中的觀察者模式在Ruby編程中的運(yùn)用實(shí)例解析
  • 實(shí)例解析Ruby設(shè)計(jì)模式開(kāi)發(fā)中對(duì)觀察者模式的實(shí)現(xiàn)
  • 深入剖析Ruby設(shè)計(jì)模式編程中對(duì)命令模式的相關(guān)使用
  • Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析
  • 詳解組合模式的結(jié)構(gòu)及其在Ruby設(shè)計(jì)模式編程中的運(yùn)用
  • 設(shè)計(jì)模式中的模板方法模式在Ruby中的應(yīng)用實(shí)例兩則
  • 實(shí)例解析Ruby設(shè)計(jì)模式編程中Strategy策略模式的使用
  • 實(shí)例講解Ruby使用設(shè)計(jì)模式中的裝飾器模式的方法
  • Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例
  • 詳解Ruby設(shè)計(jì)模式編程中對(duì)單例模式的運(yùn)用
  • Ruby設(shè)計(jì)模式編程之適配器模式實(shí)戰(zhàn)攻略
  • Ruby使用設(shè)計(jì)模式中的代理模式與裝飾模式的代碼實(shí)例
  • 解析proxy代理模式在Ruby設(shè)計(jì)模式開(kāi)發(fā)中的運(yùn)用

標(biāo)簽:喀什 濟(jì)南 山西 海南 安康 長(zhǎng)沙 崇左 山西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby中使用設(shè)計(jì)模式中的簡(jiǎn)單工廠模式和工廠方法模式》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266