小さなプロジェクトの演習としてOOP/OODを使用したいのですが、コーディング時に手続き型アプローチを使用することがよくあります。PythonをFlask(Webフレームワーク)と組み合わせて使用します
本質的に、私のアプリは、新しい映画のリリースのRSSフィードを読み取る一種のスパイダーです。新しい映画のリリースごとに、imdbリンクを使用して、2つの異なるWebサービス(imdbapiとTMDb)から、プロット、年、ジャンル、ポスター、およびそのような情報に関する情報を収集します。優先サービスが情報を提供できない場合は、他のサービスを使用してください。最後に、すべての情報をデータベースに保存します。次に、Flaskを使用してWebサイトに情報を表示します
今のところ、Spiderクラスを作成しました。次のメソッドが含まれています(わかりやすくするためにコードは削除されています)。
class Spider():
""" Spider Class """
def __init__(self, rssfeed):
def run_update(self):
movie_list = self.get_entries_from_feed()
self.get_imdb_json(movie_list)
def get_entries_from_feed(self):
""" reads an rss feed and return a list of lists with imdb id, title, and added date time """
def get_imdb_json(self, movie_list):
""" get json data from imdbapi based on list with imdb id"""
if not in db:
save_to_db
def save_to_db(self, key, nzb_title, added, data):
""" save entry to db from json data"""
「問題」は、run_update()メソッドを使用して、すべてのステップを手続き的に実行することです。また、デザインに柔軟性がないと思います。たとえば、あるサービスの映画情報を取得できない場合、他のサービスを試してみたいのですが、これを現在の形式で実装するのは簡単ではありません。
私が考えたのは、rssfeedで見つかった各映画を表すMovieクラスを作成することです。たぶん、各映画、imdbapi、TMDbに関する情報を収集するために使用するサービスごとにクラスを作成することもできますか?
では、このようなアプリをOOP / OOD方式でどのように設計しますか?車、本、果物などの教科書で使用されている単純な例を超えていると、クラスを特定するのが少し難しいと思います。