本シリーズのトップページ |
---|
[Ruby] デザインパターンの簡潔サンプルコード集 |
概要
既存コードへの機能追加の際に Singleton を追加したときの記録.
Singleton の概念などは省略.
単に Ruby でどう書くかだけを書き残す.
ファイル構成
・モジュール mod.rb で定義したデータを Singleton にする
・下記 user1.rb と user2.rb は mod.rb を include する
.
|-- mod.rb .... モジュール.
|-- user1.rb .. 上記 mod.rb の使用者その1
`-- user2.rb .. 上記 mod.rb の使用者その2
実装
mod.rb
「@a」を(同一プロセス上の) プログラム各所からアクセスできるようにする
module M
@a = '' # 保持したい値を持たせる
class << self
def a() # Getter
@a
end
def a=(b) # Setter
@a = b
end
end
end
user1.rb
既存のユーザ側の冒頭処理.
前述の @a に値を設定する.
#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-
+require_relative 'mod'
略
if __FILE__ == $0
+ include M
+ M.a = '/home/foo/.env' # ← プログラム全体から参照したいファイルを定義する
略
end
user2.rb
既存のユーザ側のとある処理.
前段である user1.rb で設定された @a の値を取り出している.
+require_relative 'mod'
略
class MyClass
+ include M
def foo
+ puts "M.a => #{M.a}"
end
end
参考情報
・https://buildersbox.corp-sansan.com/entry/2019/04/16/110000
・Rubyによるデザインパターン
以上