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

首頁 > 編程 > Ruby > 正文

Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析

2020-10-29 19:36:11
字體:
供稿:網(wǎng)友

何為外觀模式?

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

    比方說子系統(tǒng)中有一組不同的類,其中一些彼此依賴。這讓客戶端難以使用子系統(tǒng)中的類,因?yàn)榭蛻舳诵枰烂恳粋€(gè)類。外觀起到整個(gè)子系統(tǒng)的入口。有些客戶端只需要子系統(tǒng)的某些基本行為,而對(duì)子系統(tǒng)的類不做太多定制,外觀為這樣的客戶端提供簡化的接口。只有需要從某些子系統(tǒng)的類定制更多行為的客戶端,才會(huì)關(guān)注外觀背后的細(xì)節(jié)。

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

何時(shí)使用外觀模式?

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

Ruby版外觀模式應(yīng)用
需求:

股民買賣股票

初步代碼:

# -*- encoding: utf-8 -*-#股票1class Stock1  def buy    puts '股票1買入'  end    def sell    puts '股票1賣出'  endend#股票2class Stock2  def buy    puts '股票2買入'  end    def sell    puts '股票2賣出'  endend#股票3class Stock3  def buy    puts '股票3買入'  end    def sell    puts '股票3賣出'  endend#國債1class NationalDebt1  def buy    puts '國債1買入'  end    def sell    puts '國債1賣出'  endend#房地產(chǎn)1class Realty1  def buy    puts '房地產(chǎn)1買入'  end    def sell    puts '房地產(chǎn)1賣出'  endends1 = Stock1.news2 = Stock2.news3 = Stock3.newn1 = NationalDebt1.newr1 = Realty1.news1.buys2.buys3.buyn1.buyr1.buys1.sells2.sells3.selln1.sellr1.sell

問題:

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

改進(jìn)代碼

# -*- encoding: utf-8 -*-#股票1class Stock1  def buy    puts '股票1買入'  end    def sell    puts '股票1賣出'  endend#股票2class Stock2  def buy    puts '股票2買入'  end    def sell    puts '股票2賣出'  endend#股票3class Stock3  def buy    puts '股票3買入'  end    def sell    puts '股票3賣出'  endend#國債1class NationalDebt1  def buy    puts '國債1買入'  end    def sell    puts '國債1賣出'  endend#房地產(chǎn)1class Realty1  def buy    puts '房地產(chǎn)1買入'  end    def sell    puts '房地產(chǎn)1賣出'  endend#基金類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  endendf1 = Fund.newf1.buyf1.sell

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲青草| 久久激| 国产精品久久精品 | 欧美日韩精品一区 | 国产精品成人品 | 狠狠干欧美 | 91久久| 成人一区二区三区在线观看 | 亚洲一区 | 久久国产精品无码网站 | 成人毛片免费在线观看 | 日韩在线中文 | gav成人免费播放视频 | 日韩欧美综合 | 羞羞视频在线观看视频 | 国产精品自产av一区二区三区 | 日本精品中文字幕 | 天天操狠狠操 | 中文字幕在线欧美 | 国产九九精品视频 | 免费毛片a线观看 | 国产日韩在线视频 | 国产精品视频免费 | 欧美国产日韩在线观看 | 午夜影院在线观看视频 | 久久久久国产一级毛片高清版小说 | 免费99精品国产自在在线 | 最新中文字幕 | 中文字幕一区在线 | 一区二区三区四区国产 | 久久伦理电影网 | 国产乱码精品一区二区三区av | 国产第6页 | 日韩精品在线观看一区 | 久久久久久久国产精品影院 | 毛片在线视频 | 亚州av在线 | 亚洲国产精品久久久久 | 精品视频网站 | 黄色大片视频网站 | 一区二区三区视频在线播放 |