12章レターボックス――メッセージパッシングLetter Box

制約

  • より大きな問題は、問題領域に対して意味のあるモノ(things)に分解される。
  • それぞれのモノ(things)は1つの手続きを公開するデータのカプセルである。カプセルに対して送られたメッセージをその手続きで受け取り、該当するメソッドを呼び出す(ディスパッチする)。
  • メッセージのディスパッチは、別のカプセルへのメッセージ送信となる場合もある。

プログラム

 1 #!/usr/bin/env python
 2 import sys, re, operator, string
 3
 4 class DataStorageManager:
 5     """ ファイル内容のモデル化 """
 6     _data = ''
 7
 8     def dispatch(self, message):
 9         if message[0] == 'init':
10             return self._init(message[1])
11         elif message[0] == 'words':
12             return self._words()
13         else:
14             raise Exception("Message not understood " + message[0])
15
16     def _init(self, path_to_file):
17         with open(path_to_file) as f:
18 self._data ...

Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.