python design patterns github




モジュール式にアプリケーションを設計するには? (4)

私は、ポインタ、提案、リンク、警告、アイデア、さらには「モジュラー的な方法でアプリケーションを設計する方法」に関する逸話的な記述を探しています。 このプロジェクトではPythonを使用しますが、アドバイスは必ずしもこの言語を参照する必要はありませんが、OOPに基づいた設計を実装する意思があります。

ここで私がどこから来たのか、私が達成しようとしていることを理解するための文脈があります...

私のプロジェクトは、Webサービスを消費し、結果をさまざまな方法で表示する小さなアプリケーションです。

  • 呼び出しの結果だけを含む通知ポップアップ
  • アプリケーションのメインウィンドウにあるタブで、取得したRAWデータからグラフィックをプロットします
  • さまざまなサービスの結果が積み重なるメッセージのバッファー(Domandに表示されます)

このアプリケーションは、フリーの(スピーチされたままの)ソフトウェアとしてリリースされます。このため、他の開発者がプラグイン/モジュールを作成して 、メインアプリケーションの機能を拡張する必要がなくなりますコアコード。

現時点では、 プラグインは基本的に開発者がプロ​​バイダ、データ操作(存在する場合)、およびデータのユーザへの提示方法を定義することによって、新しいWebサービスをアクティブにすることができます

私は強力なモジュラーアプローチを持ったdrupalで豊富な経験を持っていますが、オブジェクト指向ではない設計にも従っています。したがって、Pythonの場合、drupalデザインは最適な解決策ではないかもしれません。

これが重要であれば、コアはGNU / Linux用にネイティブに開発されます。

あなたの時間の前にありがとう!


あなたのアプリケーションでいくつかの基本的な機能を提供するので、プラグインとして既に拡張可能/置換可能な部分を自分でコードするようにしてください。 それでは、あなたのAPIがどのように見えるかについて気分を味わってください。

また、APIが優れていることを証明するには、2番目と3番目のプラグインを作成する必要があります。これは、最初のプラグインを記述する際に多くの前提があったことを発見するためです。 通常、この第2ステップと第3ステップを実行した後、少しクリアします。

さて、あなたが書いた最後のプラグインはタイプ、入力データ、プレゼンテーション(おそらくもう一つの天気Webサービス)に似ているので、もう一つのプラグインを書くべきです。 絶対に異なるデータを使用して、異なるものを選択すると、あなたのAPIは依然として調整されているように見えます。 (あなたはいい仕事をしました!)


さて、おそらく最初に座って、プラグインがその目的を達成するために必要なものが何であるかを理解することです。

デザインの主な2つの側面を考慮する必要があります。

  • あなたのフレームワークは、プラグインからの要求をどのように受け取り/応答を受け取るでしょうか?
  • どのヘルパークラスまたはモジュールが提供するのがよいでしょうか?

そしておそらく、これは学習プロジェクトのように聞こえるかもしれません。

  • あなたは何を書こうと思っていますか?既存の図書館から選ぶだけで何が幸いですか?

また、APIを設計する際にいくつかの基本的なプラグインを開発することをお勧めします。 あなたが設計したものを実際に使用しなければならない経験は、与えられたアプローチが、必要以上に難しいものになっているかもしれない場所を見ることを可能にします。


リスナー/加入者のパターンを調べます。 遅かれ早かれ、あなたのアプリケーションはコールバックを実装するのに十分複雑なものになります。 その制限に達すると、listener-subscriber(wxPythonの実装があります)を使用します。

たとえば、いくつかのモジュールは、いくつかのフィードから新しいデータを見たいと思うでしょう。 一緒にリンクするモジュールは、新しいデータに基づいて自分自身を更新したいかもしれません。


  • あなたのアプリのためのAPIを慎重に設計する(良いAPIを設計する方法とそれが重要な理由
  • モジュールごとに独立して使用できるすべてのものを作り、シンプルな部品(KISS)から大きな部品をグループ化して構築する
  • 繰り返さないでください(ドライ)
  • あなた自身や他人のために短い文書を頻繁に書いたり、公開したりすることができます(オープンソースマントラ)...






software-design