デザインパターン - Template Method
Pythonデザインパターン - Template Method
概要
スーパークラスで処理の枠組みを決めて、サブクラスで枠組みを決める。
スーパークラスのテンプレートメソッドでアルゴリズムが記述されていますので、
サブクラス側では アルゴリズムをいちいち記述する必要がなくなる。
そして、Template Methodパターンでプログラミングしていれば、
テンプレートメソッドに誤りが発見された場合でも、テンプレートメソッドさえ修正すればよいというその後の修正の手間を抑えることができる。
Pythonでは抽象クラスを書く場合はABCモジュールを利用して実装することができる。
具体例:
プログラム例:
LIST・TABLE表示
abstract_display.py
from abc import ABCMeta, abstractmethod
class AbstractDisplay(metaclass=ABCMeta):
_data = list()
def __init__(self, data):
self._data = data
@abstractmethod
def display_header(self):
pass
@abstractmethod
def display_body(self):
pass
@abstractmethod
def display_footer(self):
pass
def get_data(self):
return self.data
def display(self):
self.display_header()
self.display_body()
self.display_footer()
list_display.py
from abstract_display import AbstractDisplay
class ListDisplay(AbstractDisply):
def display_header(self):
print('<dl>')
def display_body(self):
for k, v in self.get_data.items():
print( '<dt>' + $key + '</dt>')
print( '<dd>' + $value + '</dd>')
def display_footer(self):
print('</dl>')
table_display.py
from abstract_display import AbstractDisplay
class TableDisplay(AbstractDisply):
def display_header(self):
print('<table border="1">')
def display_body(self):
for k, v in self.get_data.items():
print('<tr>')
print('<th>' + $key + '</th>')
print('<td>' . $value . '</td>')
print('</tr>')
def display_footer(self):
print('</table>')
main.py
from list_display import ListDisplay
from table_display import TableDisplay
if __name__ == '__main__':
data = [
'Morita', 'Yamada', 'Satou',
]
display1 = ListDisplay()
display1.display()
display2 = TableDisplay()
display2.display()
出力
<dl>
<dt>0</dt>
<dd>Morita</dd>
<dt>1</dt>
<dd>Yamada</dd>
<dt>2</dt>
<dd>Satou</dd>
</dl>
<table border="1">
<tr>
<th>0</th>
<td>Morita</td>
</tr>
<tr>
<th>1</th>
<td>Yamada</td>
</tr>
<tr>
<th>2</th>
<td>Satou</td>
</tr>
</table>
他デザインパターンも更新予定
いいね!と思ったら LGTM お願いします
【PR】プログラミング新聞リリースしました! → https://pronichi.com
【PR】週末ハッカソンというイベントやってます! → https://weekend-hackathon.toyscreation.jp/about/
Author And Source
この問題について(デザインパターン - Template Method), 我々は、より多くの情報をここで見つけました https://qiita.com/morita-toyscreation/items/452c7ed22d237aa0049c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .