ソフトウェア設計の基本原則<ジャスト書きます>

1.高い凝集力、低い結合

  様々な要素は、ソフトウェアモジュールは、コードの組成との間に強い相関で高度を閉じるために互いに結合内のいわゆる高凝集力は、ソフトウェアモジュールを指し、しばしば単一責任原則と言われている一つのタスクに対してのみ責任があります。

  いわゆる低結合は、ソフトウェアシステム内の異なるモジュール間の相互接続の程度が低いことを意味します。より強力なその独立のモジュールを結合する異なるモジュール間の近いリンクは、モジュール間の結合は方法呼び出し情報の伝送、モジュール間のインターフェースの複雑さのレベルに依存して、悪いです。

  そのため、ソフトウェアシステムでは、モジュールの独立性を確保しようとする必要があり、モジュールは、より良いシンプルな、単機能の職務を実装しています。これは、再利用システムが容易になり、大幅にモジュール間の依存性を低減し、システムの安定性、保守が容易。

2.抽象指向プログラミング

  プロセス指向のコンポーネントは、下位層に依存する必要な変更と、変更の場合には、大きすぎます。肥大化したソフトウェア開発とソフトウェアアーキテクチャ設計のコストを増大させるソフトウェア・コンポーネント・モジュールの低再利用性は、後のメンテナンスを助長されていません。

  オブジェクト指向プログラムは、特定の実装に依存することなく、抽象的に依存しており、抽象はほとんど変化しません。大幅にソフトウェアアーキテクチャの堅牢性を高めるために、カップリングの顧客アプリケーションおよび実装の詳細を削減します。要約は、次のとおりであれば多くの変更を必要としないよう変更されません依存関係逆転の原則を

  理由は抽象型を使用することで、このように、クライアントと特定の実装間のデカップリングを確保し、オブジェクトのインスタンス変数の型として、プログラムの中で抽象型を使用するには、その変更は、変更の抽象型の具体的な実現には影響しません。

以下の継承の3多目的組合せ

  オブジェクト指向ソフトウェアの設計では、拡張クラスのために、最初に考えたので、サブクラスの機能の拡張を完了し、サブクラスで親クラスを継承するために、達成するために、クラスの継承を使用することです。継承の利点は、同じ属性や機能の多重化をしようとされたが、プロジェクトが成長しているとして、変化するニーズは、継承はますます肥大化になり、後者は制御および維持することは困難です。最も重要なのは、継承は白無差別になり、親クラスのpublicおよびprotectedメソッドは、すべてを継承し、これらの方法では、不要な機能のサブクラスであり、いくつかの害を発生サブクラス化されます。

  あなたが組み合わせを使用する場合は後継問題は生じないでしょう。いわゆるターゲット組み合わせ内部基準挙動を扱ういくつかのオブジェクトを作成するために使用することができるように、オブジェクト内のオブジェクトをさらに参照することを意味します。以下の点の組み合わせを使用する利点は:まず、悪クラスには影響を与えません。第二に、継承よりも柔軟な組み合わせが、オブジェクトかどうかを使用して動的に実行するために、システムによって決定されるので、最終的にと、発生しないので、親クラスの依存を減らす膨張によるクラスの継承、。

  あるいは組み合わせ完了するために相互に異なるタイプのオブジェクトを割り当てることによって、ネストされたモデルと呼ばれるオブジェクトの

「」「
3つの学校と3つの学校施設を作成し、他の内容は同じです。
」「」

クラス・スクール(オブジェクト):
    DEF __init __(自己、名前、住所):
        self.name =名
        self.address =アドレス

    DEFスピーチ(自己):
        印刷(「講義」)

OBJ1 =学校(「北京キャンパス、」「美しく、豊かな川「)
obj2の=学校(」上海キャンパス」、「浦東新区『)
OBJ3 =学校(』深センキャンパス、 『』南山区')

クラスの先生(オブジェクト):
    __init __(自己、名前、年齢、給与)DEF:
        self.name名= 
        self.age =年齢
        セルフ.__給与給与= 
        self.schoolなし= 

T1 =教師('傑" 、19、188 888)
T2 =教師( 'ヤンタオ'、18、60) 
T3 =教師( '女神'、16、90万)

###############教師割り当てキャンパス 
t1.school = OBJ1 
t2.school = obj1が
t3.school = obj2の

############################### 
#T1教師見ます、キャンパス名/アドレス
印刷(t1.school.name)
印刷(t1.school.address)
印刷(t1.name)
印刷(t1.age)
t1.school.speech()

4.「上 - オフ」の原則

  、原則 - 「のオープンは、閉じた」、すなわち、ソフトウェアエンティティの延長は、他の言葉では、既存のソフトウェアエンティティを変更しないようにしようとすると、「拡張のために開いたが、修正のため閉鎖、」ソフトウェア設計を指し、これは、オリジナルのソフトウェアエンティティを変更せずに拡張されます。このソフトウェアの設計アプローチは、それが、このようなメンテナンスソフトウェアなどの他の要因を考慮に入れて、後で、実際の目標です。ソフトウェアシステムは、これを達成することができた場合、それは拡張性と保守が容易です。

  ソフトウェア設計の分野では、デザインパターンの数のアプリケーションは、この目標を達成することです。「オープン - 閉」の原則は非常に抽象的設計原理は、より多くのスローガンのように提唱され、他の設計原理を達成することである - 特定の原則の原則「を開くには、閉じました」。設計原理と父と息子の抽象クラスとの間に同様の関係のような他の原則を - 「開く閉じました」。

(デコ)

 

 

 

 

開閉原理をマスターし、それは拡張のために開くことを教えてくれるが、修正のため閉鎖、である;(延長のためのオープン、修正のため閉鎖)------デコレータ?

(、継承の使用の合理化、継承と混乱しない)----キウイ鳥の飛行は、機能を継承することはできません。リヒター置換原則は、継承階層を破壊しないように教えてくれる

オブジェクト指向プログラミング------(抽象指向プログラミング);依存関係逆転の原則は、プログラミング・インタフェースを向くように教えてくれる

(クラスは機能のためにのみ責任がある);シングル責任の原則は、単一のクラスの任務を実装するために教えてくれる

インターフェイスの棲み分け原理とき、単一のインタフェースの設計を効率化するために教えてくれる。(、凝集が結合を低減閉鎖機能を高めます)

(高凝集、低カップリング);デメテルは、結合を低減するために教えてくれる

多重化原則の合成は、優先的に組み合わせまたは集約関係の多重化、より少ない相続の再利用に使用されることを教えてくれる。(以下継承有する多目的組成物、即ち、ネストされたの組み合わせ)

おすすめ

転載: www.cnblogs.com/shuimohei/p/11627178.html