設計モデルの初歩的な探求——基礎知識
3354 ワード
このシリーズの一番前に書きます.
以前の印象では、デザインモデルは非常に高い東東のようですが、私たちからエンジニアに昇進するには、どうしてこれを迂回することができますか.仕方がなくて、各种の设计のモードの本を探して见て、自分が多种の言语の経験を学んだことがあるおかげで、相前後してjava、php、javascriptの中の设计のモードを学んだ后で、やっと设计のモードに対して一知半解の理解があって、そこで、自分の理解したものを记录して、后で(健忘症の必须の技能)を使うことを考えます.
なぜデザインモデルを学ぶのか
1、多重化可能なオブジェクト向けの応用を設計する;2、プログラミングの効率を高め、重複符号化を減らす;(コピー&ペーストではない)3、プログラミング者が迅速にシステムの解決方案を確定することを助ける;(以前の方案を多重化または少し修正する)4、モジュール化システムの構築を助け、モジュール間の結合度を下げる;(一発で全身を動かさない)
デザインモード自体について
これからはそれぞれのパターンを勉強して、この4つの点に対してそれを食べます!
より多くの準備
1、パターンは目的によって分けられる:
2、作用範囲によって、クラスモードと対象モードに分けられる.クラスモードはクラスとサブクラスの関係を処理し、コンパイル時に確定した.オブジェクトモードオブジェクト間の関係を処理し、よりダイナミックに
3、顧客要求はオブジェクトに操作を実行させる唯一の方法であり、操作はまたオブジェクトが内部データを変更する唯一の方法である.
4、現在の現実世界を厳格に反映するモデルは将来の世界を反映するシステムを生み出すことができない--だから私たちはより高いレベルの抽象類が必要だ.
5、対象の粒度とは、対象の大きさと数の測定結果をいう.
6、オブジェクトに送信された要求とその対応する操作の実行時の接続を動的バインドと呼ぶ
7、動的バインドでは、実行時に同じインタフェースを持つオブジェクトを互いに置き換えることができます.この置換性をマルチステートと呼びます.
8、オブジェクトの実現はクラスによって決定され、クラスはオブジェクトの内部データと表示を指定し、オブジェクトが完成できる操作も定義した.オブジェクトはクラスのインスタンス化によって作成されます.
9.新しいクラスは、既存のクラスを継承することによって定義することができます(オブジェクトは作成され、クラスは定義されています!!)、子クラスが親クラスを継承するときに親定義のすべてのデータと操作が含まれます.子クラスのインスタンスオブジェクトには、すべての子と親定義のデータが含まれ、子と親定義のすべての操作を完了できます.
10、抽象クラスの目的は、そのサブクラスに共通インタフェースを定義することである.抽象クラスは、その//部分または全部//(ここでは部分であってもよく、抽象クラスが自身の中で部分操作を実現できることを意味する)操作の実現をサブクラスに遅延させる(これらの操作は抽象クラス自身の中で実現する必要はなく、空の方法を書く).
11、抽象クラスはインスタンス化できない!!!
12、抽象クラスで定義されているが実現されていない操作を抽象操作と呼ぶ.
13、混入クラス(mixin)は、他のクラスに選択可能なインタフェースまたは機能を提供するクラスであり、インスタンス化されず、マルチ継承が要求される.
14、インタフェースに対してプログラミングを行い、実装に対してプログラミングを行うのではない.
15、オブジェクトシステムにおける機能多重化に向けた2つの最も一般的な技術は、クラス継承とオブジェクト組合せである.
16、クラス継承は多重化された実装を比較的容易に変更することができるが、親から継承された実装を再実行することができず、親が子クラスに詳細を漏らし、親の変更は必然的に子クラスの変化を引き起こし、結合を増加させるため、パッケージ性を破壊する.
17、オブジェクトの組み合わせは、他のオブジェクトへの参照を得ることによって、実行時に動的に定義される.ブラックボックス多重化(Black Box Multiplex)の機能により、オブジェクト同士がインタフェースを介して参照されるため、カプセル化性が損なわれず、クラス継承の規模が減少します.
18.クラス継承ではなく、オブジェクトの組合せを優先的に使用します.
19.委任は、組合せが継承と同様の多重化能力を有する組合せ方法である.リクエストを受信したオブジェクトは、そのエージェント(サブクラスがリクエストを親に渡す処理と同様)にオペレーションを委任します.委任方式は、依頼されたオペレーションがリクエストを受信したオブジェクトを参照できるように、自分を委任者に伝えます(this参照に相当).
20.依頼の主な利点は、時刻組合せ対象操作の実行を容易にし、これらの操作の組合せ方式を変更することである.
21、パラメトリックタイプは、クラス継承とオブジェクトの組合せを除く第3の方法を提供し、オブジェクト向けシステムにおける動作を組み合わせる.
22.集約は、1つのオブジェクトが別のオブジェクトを持つか、または別のオブジェクトに責任を負うことを意味し、集約オブジェクトとその所有者は同じ宣言サイクルを有する.
23、知り合いとは、あるオブジェクトが別のオブジェクトしか知らないことを意味します.(関連付け、参照)知り合いのオブジェクトは、互いの操作を要求する可能性がありますが、相手の責任ではありません.
24、根本的に言えば、知り合いか集約かは明示的な言語メカニズムではなく、プログラミング者の意図で決まる.
25、システムの変化を考慮しない設計は将来的に再設計する必要がある可能性がある.
26、パターンとフレームワークの違い:
27、設計モードの選択方法:
28、設計モードの使用方法:
以前の印象では、デザインモデルは非常に高い東東のようですが、私たちからエンジニアに昇進するには、どうしてこれを迂回することができますか.仕方がなくて、各种の设计のモードの本を探して见て、自分が多种の言语の経験を学んだことがあるおかげで、相前後してjava、php、javascriptの中の设计のモードを学んだ后で、やっと设计のモードに対して一知半解の理解があって、そこで、自分の理解したものを记录して、后で(健忘症の必须の技能)を使うことを考えます.
なぜデザインモデルを学ぶのか
1、多重化可能なオブジェクト向けの応用を設計する;2、プログラミングの効率を高め、重複符号化を減らす;(コピー&ペーストではない)3、プログラミング者が迅速にシステムの解決方案を確定することを助ける;(以前の方案を多重化または少し修正する)4、モジュール化システムの構築を助け、モジュール間の結合度を下げる;(一発で全身を動かさない)
デザインモード自体について
:
:
:
: ;
これからはそれぞれのパターンを勉強して、この4つの点に対してそれを食べます!
より多くの準備
1、パターンは目的によって分けられる:
: , ;
: , ;
: , ;
2、作用範囲によって、クラスモードと対象モードに分けられる.クラスモードはクラスとサブクラスの関係を処理し、コンパイル時に確定した.オブジェクトモードオブジェクト間の関係を処理し、よりダイナミックに
3、顧客要求はオブジェクトに操作を実行させる唯一の方法であり、操作はまたオブジェクトが内部データを変更する唯一の方法である.
4、現在の現実世界を厳格に反映するモデルは将来の世界を反映するシステムを生み出すことができない--だから私たちはより高いレベルの抽象類が必要だ.
5、対象の粒度とは、対象の大きさと数の測定結果をいう.
6、オブジェクトに送信された要求とその対応する操作の実行時の接続を動的バインドと呼ぶ
7、動的バインドでは、実行時に同じインタフェースを持つオブジェクトを互いに置き換えることができます.この置換性をマルチステートと呼びます.
8、オブジェクトの実現はクラスによって決定され、クラスはオブジェクトの内部データと表示を指定し、オブジェクトが完成できる操作も定義した.オブジェクトはクラスのインスタンス化によって作成されます.
9.新しいクラスは、既存のクラスを継承することによって定義することができます(オブジェクトは作成され、クラスは定義されています!!)、子クラスが親クラスを継承するときに親定義のすべてのデータと操作が含まれます.子クラスのインスタンスオブジェクトには、すべての子と親定義のデータが含まれ、子と親定義のすべての操作を完了できます.
10、抽象クラスの目的は、そのサブクラスに共通インタフェースを定義することである.抽象クラスは、その//部分または全部//(ここでは部分であってもよく、抽象クラスが自身の中で部分操作を実現できることを意味する)操作の実現をサブクラスに遅延させる(これらの操作は抽象クラス自身の中で実現する必要はなく、空の方法を書く).
11、抽象クラスはインスタンス化できない!!!
12、抽象クラスで定義されているが実現されていない操作を抽象操作と呼ぶ.
13、混入クラス(mixin)は、他のクラスに選択可能なインタフェースまたは機能を提供するクラスであり、インスタンス化されず、マルチ継承が要求される.
14、インタフェースに対してプログラミングを行い、実装に対してプログラミングを行うのではない.
, 。
15、オブジェクトシステムにおける機能多重化に向けた2つの最も一般的な技術は、クラス継承とオブジェクト組合せである.
16、クラス継承は多重化された実装を比較的容易に変更することができるが、親から継承された実装を再実行することができず、親が子クラスに詳細を漏らし、親の変更は必然的に子クラスの変化を引き起こし、結合を増加させるため、パッケージ性を破壊する.
17、オブジェクトの組み合わせは、他のオブジェクトへの参照を得ることによって、実行時に動的に定義される.ブラックボックス多重化(Black Box Multiplex)の機能により、オブジェクト同士がインタフェースを介して参照されるため、カプセル化性が損なわれず、クラス継承の規模が減少します.
18.クラス継承ではなく、オブジェクトの組合せを優先的に使用します.
, , 。
19.委任は、組合せが継承と同様の多重化能力を有する組合せ方法である.リクエストを受信したオブジェクトは、そのエージェント(サブクラスがリクエストを親に渡す処理と同様)にオペレーションを委任します.委任方式は、依頼されたオペレーションがリクエストを受信したオブジェクトを参照できるように、自分を委任者に伝えます(this参照に相当).
20.依頼の主な利点は、時刻組合せ対象操作の実行を容易にし、これらの操作の組合せ方式を変更することである.
21、パラメトリックタイプは、クラス継承とオブジェクトの組合せを除く第3の方法を提供し、オブジェクト向けシステムにおける動作を組み合わせる.
22.集約は、1つのオブジェクトが別のオブジェクトを持つか、または別のオブジェクトに責任を負うことを意味し、集約オブジェクトとその所有者は同じ宣言サイクルを有する.
23、知り合いとは、あるオブジェクトが別のオブジェクトしか知らないことを意味します.(関連付け、参照)知り合いのオブジェクトは、互いの操作を要求する可能性がありますが、相手の責任ではありません.
24、根本的に言えば、知り合いか集約かは明示的な言語メカニズムではなく、プログラミング者の意図で決まる.
25、システムの変化を考慮しない設計は将来的に再設計する必要がある可能性がある.
26、パターンとフレームワークの違い:
27、設計モードの選択方法:
28、設計モードの使用方法:
,
、 : 。
, 。
: , ,