最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby設(shè)計模式編程中對外觀模式的應用實例分析

 更新時間:2016年03月16日 16:41:16   作者:范孝鵬  
這篇文章主要介紹了Ruby設(shè)計模式編程中對外觀模式的應用實例分析,外觀模式在Ruby on Rails開發(fā)項目中也經(jīng)常被用到,需要的朋友可以參考下

何為外觀模式?

    外觀模式為子系統(tǒng)中一組不同的接口提供統(tǒng)一的接口。外觀定義了上層接口,通過降低復雜度和隱藏子系統(tǒng)間的通信以及依存關(guān)系,讓子系統(tǒng)更加易于使用。

    比方說子系統(tǒng)中有一組不同的類,其中一些彼此依賴。這讓客戶端難以使用子系統(tǒng)中的類,因為客戶端需要知道每一個類。外觀起到整個子系統(tǒng)的入口。有些客戶端只需要子系統(tǒng)的某些基本行為,而對子系統(tǒng)的類不做太多定制,外觀為這樣的客戶端提供簡化的接口。只有需要從某些子系統(tǒng)的類定制更多行為的客戶端,才會關(guān)注外觀背后的細節(jié)。

    外觀模式:為系統(tǒng)中的一組接口提供一個統(tǒng)一的接口。外觀定義一個高層接口,讓子系統(tǒng)更易于使用。

何時使用外觀模式?

  •     子系統(tǒng)正逐漸變得復雜。應用模式的過程中演化出許多類,可以使用外觀為這些子系統(tǒng)提供一個較簡單的接口。
  •     可以使用外觀對子系統(tǒng)進行分層。每個子系統(tǒng)級別有一個外觀作為入口點。讓它們通過其外觀進行通信,可以簡化它們的依賴關(guān)系。

Ruby版外觀模式應用
需求:

股民買賣股票

初步代碼:

# -*- encoding: utf-8 -*-

#股票1
class Stock1
  def buy
    puts '股票1買入'
  end
  
  def sell
    puts '股票1賣出'
  end
end

#股票2
class Stock2
  def buy
    puts '股票2買入'
  end
  
  def sell
    puts '股票2賣出'
  end
end

#股票3
class Stock3
  def buy
    puts '股票3買入'
  end
  
  def sell
    puts '股票3賣出'
  end
end

#國債1
class NationalDebt1
  def buy
    puts '國債1買入'
  end
  
  def sell
    puts '國債1賣出'
  end
end

#房地產(chǎn)1
class Realty1
  def buy
    puts '房地產(chǎn)1買入'
  end
  
  def sell
    puts '房地產(chǎn)1賣出'
  end
end
s1 = Stock1.new
s2 = Stock2.new
s3 = Stock3.new
n1 = NationalDebt1.new
r1 = Realty1.new

s1.buy
s2.buy
s3.buy
n1.buy
r1.buy

s1.sell
s2.sell
s3.sell
n1.sell
r1.sell

問題:

可以發(fā)現(xiàn)用戶需要了解股票、國債、房產(chǎn)情況,需要參與這些項目的具體買和賣,耦合性很高。

改進代碼

# -*- encoding: utf-8 -*-

#股票1
class Stock1
  def buy
    puts '股票1買入'
  end
  
  def sell
    puts '股票1賣出'
  end
end

#股票2
class Stock2
  def buy
    puts '股票2買入'
  end
  
  def sell
    puts '股票2賣出'
  end
end

#股票3
class Stock3
  def buy
    puts '股票3買入'
  end
  
  def sell
    puts '股票3賣出'
  end
end

#國債1
class NationalDebt1
  def buy
    puts '國債1買入'
  end
  
  def sell
    puts '國債1賣出'
  end
end

#房地產(chǎn)1
class Realty1
  def buy
    puts '房地產(chǎn)1買入'
  end
  
  def sell
    puts '房地產(chǎn)1賣出'
  end
end

#基金類
class Fund
  attr_accessor s1, s2, s3, n1, r1
  
  def initialize
    s1 = Stock1.new
    s2 = Stock2.new
    s3 = Stock3.new
    n1 = NationalDebt1.new
    r1 = Realty1.new
  end
  
  def buy
    s1.buy
    s2.buy
    s3.buy
    n1.buy
    r1.buy
  end
  
  def sell
    s1.sell
    s2.sell
    s3.sell
    n1.sell
    r1.sell
  end
end

f1 = Fund.new
f1.buy
f1.sell

好處:用戶不需要了解各種股票,只需購買賣出基金即可。

相關(guān)文章

  • 實例講解Ruby使用設(shè)計模式中的裝飾器模式的方法

    實例講解Ruby使用設(shè)計模式中的裝飾器模式的方法

    這篇文章主要介紹了Ruby使用設(shè)計模式中的裝飾器模式的實例, 裝飾模式能夠?qū)崿F(xiàn)動態(tài)的為對象添加功能,需要的朋友可以參考下
    2016-03-03
  • 你應該知道的Ruby代碼風格

    你應該知道的Ruby代碼風格

    Ruby是非常自由靈活的語言,所以不同的Rubist風格差異可能很大。那么在代碼規(guī)范方面他們的差異大不大呢? 通過分析GitHub上托管的開源代碼,得出了 一些有趣的結(jié)果 ,讓我們一起來看看Rubist的喜好吧
    2014-03-03
  • Ruby中使用Nokogiri包來操作XML格式數(shù)據(jù)的教程

    Ruby中使用Nokogiri包來操作XML格式數(shù)據(jù)的教程

    這篇文章主要介紹了Ruby中使用Nokogiri包來操作XML格式數(shù)據(jù)的教程,Nokogiri是一個gem包,Nokogiri可以依靠XPath和CSS3選擇器方式來實現(xiàn)搜索功能,比較強大,需要的朋友可以參考下
    2016-04-04
  • ruby執(zhí)行周期性任務(wù)的三種gem介紹

    ruby執(zhí)行周期性任務(wù)的三種gem介紹

    無論是用ruby做系統(tǒng)管理,還是用rails做web開發(fā),都可能遇到周期性任務(wù),它們按照一定時間周期(1小時,2天......)持續(xù)地觸發(fā)。在ruby中,我認為一次性任務(wù)使用 sidekiq 來完成是非常方便的,而周期性的任務(wù)就需要用到 whenever , sidetiq , clockwork 等等gem了。
    2014-07-07
  • Ruby Dir 類和常用方法

    Ruby Dir 類和常用方法

    Ruby編程語言中的Dir類包括多種用于目錄處理的方法,本文詳細介紹了如何使用Dir.chdir更改工作目錄、Dir.children列出目錄內(nèi)容、Dir.delete刪除空目錄等常用方法,通過示例,讀者可以學習如何在Ruby程序中有效地瀏覽和操作文件系統(tǒng)的目錄結(jié)構(gòu)
    2024-09-09
  • Ruby簡明教程之循環(huán)語句介紹

    Ruby簡明教程之循環(huán)語句介紹

    這篇文章主要介紹了Ruby簡明教程之循環(huán)語句介紹,非常簡潔的講解,可以作為語法備忘,需要的朋友可以參考下
    2014-06-06
  • Ruby和元編程之萬物皆為對象

    Ruby和元編程之萬物皆為對象

    這篇文章主要介紹了Ruby和元編程之萬物皆為對象,想要掌握Ruby和Ruby的元編程,對象就是第一門必修功課,需要的朋友可以參考下
    2014-10-10
  • ruby元編程之method_missing的一個使用細節(jié)

    ruby元編程之method_missing的一個使用細節(jié)

    這篇文章主要介紹了ruby元編程之method_missing的一個使用細節(jié),本文介紹在使用method_missing時造成死循環(huán)的一個現(xiàn)象,需要的朋友可以參考下
    2015-05-05
  • 21個你應該知道的Ruby編程技巧

    21個你應該知道的Ruby編程技巧

    這篇文章主要介紹了21個你應該知道的Ruby編程技巧,涵蓋編碼過程中的方方面面,需要的朋友可以參考下
    2014-06-06
  • Ruby中使用正則表達式的基礎(chǔ)指引

    Ruby中使用正則表達式的基礎(chǔ)指引

    這篇文章主要介紹了Ruby中使用正則表達式的基礎(chǔ)指引,如今對正則表達式的支持已經(jīng)成為各編程語言的標配屬性,需要的朋友可以參考下
    2015-07-07

最新評論

香港| 塘沽区| 高要市| 光山县| 兰溪市| 南木林县| 镇宁| 辽阳市| 龙川县| 同心县| 乐安县| 临猗县| 安义县| 河池市| 南宫市| 濉溪县| 丰镇市| 新宾| 公主岭市| 南康市| 德江县| 郎溪县| 蒙城县| 六安市| 江都市| 沾化县| 沭阳县| 固原市| 扎囊县| 铜川市| 安丘市| 沁水县| 濮阳市| 准格尔旗| 安龙县| 余庆县| 六安市| 漾濞| 甘谷县| 吉安县| 泾源县|