2

次のような Powershell スクリプトの作成に成功しました。

  • AD に問い合わせてコンピュータのリストを取得する
  • ソフトウェア/ハードウェア情報を取得するために WMI を介してすべてのコンピューターにクエリを実行する
  • 収集したデータを MySQL データベースに挿入します。

スクリプトは正常に動作しますが、実装方法が気に入りません。これは手続き型であり、コードの重複が多く、何かを変更する必要があるたびに混乱を引き起こします。

さて、お聞きしたいのは、OOPを使用してPythonで実装する最もクリーンな方法は何ですか? 私はこれに似たものを考えました(疑似コード):

Class ADquery
    function get_computers( UO ): return a list of computers in the specified UO

Class Computer
    constructor( computername )
    function query(): connect to the computer and pull the info through WMI
    function print(): print the collected info to the console (debug)
    property RAM
    property CPU
    ...

質問:

  1. 収集したデータをデータベースに保存するには、別のオブジェクト (データベースなど) を作成して Computer オブジェクトを渡すか、Computer クラスにメンバー関数 (save_db() など) を追加する必要がありますか?

  2. 2 番目のオプションを選択した場合、複数のオブジェクトを扱っているときに膨大な数の MySQL 接続が発生することはありませんか?

どうもありがとう、私の悪い英語でごめんなさい

4

2 に答える 2

2

インターネットや地元の書店からオブジェクト指向設計の本を入手することもできます. また、ガンマらの本など、デザイン パターンを読むことをお勧めします。アル。. オブジェクト指向プログラミングについての思考プロセスを形成するために、特定の問題を解決する方法の標準パターンを調べることは非常に役立ちます。

ps あなたの英語はまったく悪くありません (私もネイティブ スピーカーではないことに注意してください ;))。

于 2012-04-18T07:46:57.233 に答える
2

そのアーキテクチャは私には合理的に見えます。

  1. どちらでもかまいませんが、このような小さなアプリケーションで実際に大きな違いが生じるかどうかはわかりません。

  2. 潜在的に。実装方法によっては、多くの接続が行われる可能性があります。妥当な数の挿入を行っている場合は、それらをリストに貼り付けて、コードで可能であれば一度にすべて挿入します。

于 2012-04-18T07:24:27.947 に答える