Skip to main content

3 posts tagged with "Design Pattern"

View All Tags

情報処理: 覚え書き

· 5 min read
Yu Sasaki
Enterprise Security Manager / Advisor

1. 主なデータの管理・取り出し方法

  1. LIFO (Last-In First-Out): キューなどに使われる。
  2. FIFO (First-In First-Out): スタック。再帰的な処理をする際、実行中の状態を保存しておく為にも使われる。
  3. LFU (Least Frequently Used): 参照頻度が最も少ないものを取り出す。
  4. LRU (Least Recently Used): 未使用時間が最も長いものを取り出す。

Java: イベント駆動によるModelとViewの分離 - Observer パターン

· 4 min read
Yu Sasaki
Enterprise Security Manager / Advisor

よくGUIやWebアプリの簡単なサンプルソースなどは、UIとアプリケーションのロジックが同じクラスまたはメソッドに書かれている場合が多い。それはそのサンプルがある特定の機能や関数の紹介の為に簡潔に書いているのだが、仮にいざそのソースを元にアプリを作りこんで機能の追加を行っていくとUIとアプリのロジックは分離したほうが保守・拡張と共に行い易い。 下記のプログラムは1秒毎に数値をカウントし、それを2進数と10進数でGUI上のラベルに出力する機能をモデルとビューに分けている。すなわち、数値のカウントをするモデルと数値をUIに表示するビューに。(いくつかの言語ではGUIの部品としてタイマーがあるようだが。。)

Java, デザインパターン: Simple Factory - インスタンスの生成方法を任せる

· 3 min read
Yu Sasaki
Enterprise Security Manager / Advisor

以前デザインパターンの理解の確認がてら簡単なコードを書いた。リファクタリングの前後を省いているので初見ではパターンのメリットと適応基準が見えにくく、またサンプルのテーマ設定が良くなかったので少々説明し難い。今回のようなToyコードみたいなのはたまに書く。

クラス図

simple_factory_classes 文字列の分割プログラム。 入力: クラス名+<区切り文字>+メソッド名の文字列 出力: その文字列の分割結果が格納されたインスタンス(Namerクラス)。 文字列の形式が"<クラス名>#<メソッド名>"か"<クラス名>.<メソッド名>"によって、すなわち区切り文字によって分割処理のメソッドの内容が変わるので、その違いを派生クラスでオーバーライドして定義したメソッドで吸収しようというもの。 これによる利点はMain側が分割対象の文字列の形式を意識しなくてよいこと。単にNameFactory#getNamer()に渡すだけ。文字列の形式が2つの内のどちらで、どのクラスに処理を任せるかの処理はgetNamer()が行う。これによって、仮に文字列の形式を増やす場合に修正するのはgetNamer()のifブロック、追加するのは新しい派生クラス。