a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Ruby > 正文

Ruby中使用設計模式中的簡單工廠模式和工廠方法模式

2020-10-29 19:36:26
字體:
來源:轉載
供稿:網友

之前有看過《ruby設計模式》,不過漸漸的都忘記了?,F在買了一個大話設計模式,看起來不是那么枯燥,順便將代碼用ruby實現了一下。

簡單工廠模式:

# -*- 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 endend#加法類class OperationAdd < Operation def result  number_a + number_b endend#減法類class OperationSub < Operation def result  number_a - number_b endend#乘法類class OperationMul < Operation def result  number_a * number_b endend#除法類class OperationDiv < Operation def result  raise '除數不能為0' if number_b == 0   number_a / number_b endend#工廠類class OperationFactory def self.create_operate(operate)  case operate  when '+'   OperationAdd.new()  when '-'   OperationSub.new()  when '*'   OperationMul.new()  when '/'   OperationDiv.new()  end endendoper = OperationFactory.create_operate('/')oper.number_a = 1oper.number_b = 2p oper.result

這樣寫的好處是降低耦合。
比如增加一個開根號運算的時候,只需要在工廠類中添加一個分支,并新建一個開根號類,不會去動到其他的類。

工廠方法模式:

# -*- 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 endend#加法類class OperationAdd < Operation def result  number_a + number_b endend#減法類class OperationSub < Operation def result  number_a - number_b endend#乘法類class OperationMul < Operation def result  number_a * number_b endend#除法類class OperationDiv < Operation def result  raise '除數不能為0' if number_b == 0   number_a / number_b endendmodule FactoryModule def create_operation endend#加法工廠class AddFactory include FactoryModule  def create_operation  OperationAdd.new end end#減法工廠class SubFactory include FactoryModule  def create_operation  OperationSub.new endend#乘法工廠class MulFactory include FactoryModule  def create_operation  OperationMul.new end end#除法工廠class DivFactory include FactoryModule  def create_operation  OperationDiv.new end endfactory = AddFactory.newoper = factory.create_operationoper.number_a = 1oper.number_b = 2p oper.result

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区精品 | www.色综合 | 日韩中文字幕视频 | 狠狠色狠狠色合久久伊人 | 爱爱视频网站 | 亚洲91精品 | 成人亚洲视频 | 国产成人精品a视频一区www | 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲精品视频在线观看免费视频 | 精品三级在线 | 在线视频这里只有精品 | 精品福利一区二区 | 国产成人av一区二区 | 精品久久一区二区三区 | 日韩一区二区在线免费观看 | 精品欧美一区二区三区 | av性色 | 国产91 在线播放 | 日韩福利| 色婷婷中文字幕 | 久久久久国产一区二区三区 | 美日韩一区二区三区 | 国产伦精品一区二区三区视频网站 | 黄色一级视频 | 精品在线一区二区三区 | 日韩一区二区在线免费观看 | 日本天堂一区二区 | 一区二区影院 | 亚洲国产精品久久久久久 | 午夜视频在线免费观看 | 国产九九在线观看 | www.亚洲精品 | 国产乱码精品一区二区三区五月婷 | 99久久久无码国产精品 | 久久精品亚洲 | 精品国产乱码久久久久久久 | 亚洲不卡视频 | 国产伦精品一区二区三区四区视频 | 日本久久久久久久久久久久 | 亚洲成人福利 |