欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年03月16日 11:53:28   作者:范孝鵬  
這篇文章主要介紹了Ruby中使用設(shè)計(jì)模式中的簡(jiǎn)單工廠模式和工廠方法模式的示例,這兩種模式經(jīng)常被用于Ruby on Rails開(kāi)發(fā)的結(jié)構(gòu)設(shè)計(jì)中,需要的朋友可以參考下

之前有看過(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)算工廠,分別是加法工廠、減法工廠、乘法工廠和除法工廠。

相關(guān)文章

  • 安裝Ruby和安裝Rails詳細(xì)步驟詳解

    安裝Ruby和安裝Rails詳細(xì)步驟詳解

    這篇文章主要介紹了安裝Ruby和安裝Rails詳細(xì)步驟詳解,包括解決rbenv安裝慢,更新rbenv的ruby版本列表,多版本ruby共存,需要的朋友可以參考下
    2022-04-04
  • CentOS 6.3下編譯安裝Ruby 2.0筆記

    CentOS 6.3下編譯安裝Ruby 2.0筆記

    這篇文章主要介紹了CentOS 6.3下編譯安裝Ruby 2.0筆記,最重要的是解決了一個(gè)編譯時(shí)的錯(cuò)誤,需要的朋友可以參考下
    2014-09-09
  • CentOS7下搭建ruby on rails開(kāi)發(fā)環(huán)境

    CentOS7下搭建ruby on rails開(kāi)發(fā)環(huán)境

    聽(tīng)說(shuō)rails是一個(gè)比較流行的快速開(kāi)發(fā)框架,對(duì)于我這個(gè)web不熟悉的人來(lái)說(shuō),那是極好的!可以快速上手,又能真正了解服務(wù)器端的各種,所以rails搞起來(lái)。不過(guò)一個(gè)完整的開(kāi)發(fā)環(huán)境搭建過(guò)程完成后,真的只能用各種坑來(lái)形容~
    2016-02-02
  • Ruby正則表達(dá)式詳解

    Ruby正則表達(dá)式詳解

    正則表達(dá)式是一種特殊序列的字符,它通過(guò)使用有專門語(yǔ)法的模式來(lái)匹配或查找字符串集合,這篇文章纖細(xì)介紹了Ruby大的正則表達(dá)式,文章有詳細(xì)的代碼示例,需要的朋友可以參考一下
    2023-04-04
  • 淺析Ruby中繼承和消息的相關(guān)知識(shí)

    淺析Ruby中繼承和消息的相關(guān)知識(shí)

    這篇文章主要介紹了Ruby中繼承和消息,是Ruby入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • 詳解Ruby中的方法概念

    詳解Ruby中的方法概念

    這篇文章主要介紹了詳解Ruby中的方法概念,包括方法的自定義和返回值等基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 使用Ruby on Rails快速開(kāi)發(fā)web應(yīng)用的教程實(shí)例

    使用Ruby on Rails快速開(kāi)發(fā)web應(yīng)用的教程實(shí)例

    這篇文章主要介紹了使用Ruby on Rails快速開(kāi)發(fā)web應(yīng)用的教程實(shí)例,本文來(lái)自于IBM官方技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • ruby寫掃描當(dāng)前網(wǎng)頁(yè)所有url的腳本

    ruby寫掃描當(dāng)前網(wǎng)頁(yè)所有url的腳本

    用ruby寫的掃描當(dāng)前網(wǎng)頁(yè)所有url的腳本,對(duì)于學(xué)習(xí)ruby的朋友是個(gè)不錯(cuò)的實(shí)例
    2008-06-06
  • 深入剖析Ruby設(shè)計(jì)模式編程中對(duì)命令模式的相關(guān)使用

    深入剖析Ruby設(shè)計(jì)模式編程中對(duì)命令模式的相關(guān)使用

    這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中對(duì)命令模式的相關(guān)使用,文中還講到了關(guān)于觀察者模式和命令模式的一些概念區(qū)別,需要的朋友可以參考下
    2016-04-04
  • 冒泡排序算法及Ruby版的簡(jiǎn)單實(shí)現(xiàn)

    冒泡排序算法及Ruby版的簡(jiǎn)單實(shí)現(xiàn)

    冒泡排序?yàn)樽罨镜呐判蛩惴ㄖ?其時(shí)間復(fù)雜度為O(n^2),這里我們就來(lái)簡(jiǎn)單看一下冒泡排序算法及Ruby版的簡(jiǎn)單實(shí)現(xiàn),首先還是先來(lái)了解算法原理:
    2016-05-05

最新評(píng)論