デザインパターン研究ノート(4) - モデルのタイプ(行動パターン)
その他
2019-09-02 09:46:49
訪問数: null
行動パターン(行動パターン)
- デューティチェーン(責任のチェーン)
- オブジェクトの複数の要求を処理する機会は、要求の送信者と受信者との間の結合を回避するために、オブジェクトがチェーンに接続され、オブジェクトは彼を処理するまで、チェーンに沿って要求を渡します
- 代表的なアプリケーション:サーブレットフィルタ
- コマンドモード(コマンド)
- インタプリタパターン(インタプリタ)
- Interpreterパターンは、行動の一種です。
- インタプリタを提供しながら、与えられた言語後、インタプリタモードは、その文法表現のいずれかを定義することができます。
- クライアントは、このステートメントの文を解釈するインタプリタを使用することができます。
- 代表的なアプリケーション:4つの混合コンピューティングの解析は、XML文書を解析します
- イテレータパターン(イテレータ)
- オブジェクト表現を公開せず、逐次重合オブジェクト内の種々の要素にアクセスを提供するための方法
- 代表的なアプリケーション:Javaのイテレータ
- 仲介モデル(メディエータ)
- 仲介モデル、また、公知のメディエーターモデルは、そのオブジェクトの行動パターンです。
- オブジェクトのセットは、それが疎結合ように仲介保持オブジェクトが明示的に、相互に参照する対話、およびそれらの間の相互作用とは独立して変更することができるカプセル化する調停オブジェクトを使用します。
- 典型的なアプリケーション:マルチチャットルーム、MVCアーキテクチャ(コントローラが仲介ある)、及び複数のインタフェースGUIの開発を制御するための参照
- 4つのロール:(着信クラスメソッド仲介オブジェクトで同僚)
- メディエータ:メディエータ抽象
- ConcreteMediator:特定調停者
- 同僚:抽象クラスの同僚
- ConcreteColleague:特定のクラスの同僚
- メモモード(メメント)
- メモのオブジェクトは、他の目的(スナップショット)物体の内部状態のスナップショットを格納するために使用されます。
- パッケージを破壊することなく、メモモードに意図されたオブジェクトが適切な将来的に保存された状態に復元することができるように、それは、オブジェクトの状態、および外部の、保存をキャプチャします。
- 代表的なアプリケーション:
- 0は、セッションとクッキーの使用は、メモモードです。
- 1、後でそれを後悔。
- 2、ゲームをプレイアーカイブ。
- 3、Ctrl + ZでのWindows。
- 図4に示すように、IEを後退させます。
- 5、取引管理データベース。
- モードオブザーバ(オブザーバー)
- 4つの役割:(オブザーバーは、対象物を保持し、初期化時に目標に自分自身を登録します。ターゲットの変更は、視聴者に通知する場合には)
- 件名:目標
- ConcreteSubject:ターゲット
- オブザーバー:オブザーバー
- ConcreteObserver:特定のオブザーバー
- Javaのネイティブインタフェース:観察可能な、オブザーバー
- 仲介モデルVS:
- 同僚(同僚)との相互作用することを強調するメディエーター(仲介者)クラス
- ターゲット・クラス(対象)におけるオブザーバー(観察)は変更後のユニファイドコミュニケーションオブザーバの目標ことを強調しました
- モード状態(ステート)
- 戦略モード(戦略)
- 一連のアルゴリズムを定義し、各アルゴリズムは、一緒にパッケージされ、そして、彼らはお互いに交換することができるようになっています。
- 戦略モードは、ポリシーモード(ポリシー)として知られている顧客の利用の変化、のアルゴリズムは独立してできます。
- 戦略モードは、オブジェクトの行動パターンです。
- ステータスモード対:
- クラスを露出させるために具体的な戦略戦略モードでは、呼び出し側は、修正するために、各ポリシーで特定の違いを理解する必要があります。
- モード状態変化の状態にかかわらず、外部の、その内部状態の変化によって決定されます
- 状態オブジェクトは、クラスのメンバ変数環境、政策環境のパラメータオブジェクトは、クラスの方法であります
- 3つの役割:
- コンテキスト:環境
- 戦略:戦略抽象クラス
- ConcreteStrategy:具体的な戦略
- Template Methodパターン(テンプレート法)
- パブリック抽象クラスは、サブクラスで実装することができますファッション/テンプレートのそのメソッドの実装は、メソッドをオーバーライドする必要が定義しますが、呼び出しは抽象クラスのように定義されます
- 典型的な例:サービス(サーブレット)のdoGet()のdoPost()メソッド
- Visitorパターン(ビジター)
- 5つのロール:
- 抽象の訪問者:アクセス動作の各特定の要素クラスの宣言オブジェクト構造のため。
- 特定の訪問者:特定の各要素を達成するためのアクセス方法。
- 抽象要素:ビジターアクセス動作、通常は抽象クラスとインタフェースを受け、メソッド宣言を受け入れます。
- 特定の要素:訪問者に対応したアクセスメソッドを呼び出し、メソッドを受け入れる実装します。
- オブジェクト構造:オブジェクトの要素を格納し、トラバーサル方法を提供するモードの組み合わせを用いて実装することができます
- 設計パターンデータの分離操作のデータ構造
- Javaのような過負荷には、上院への異なるアプローチは、達成するための別の方法であります
interface Visitor {
void visit(Games games);
void visit(Photos photos);
}
interface Computer {
void accept(Visitor visitor);
}
class ZhangSan implements Visitor {
public void visit(Games games) {
games.play();
}
public void visit(Photos photos) {
photos.watch();
}
}
class LiSi implements Visitor {
public void visit(Games games) {
games.play();
}
public void visit(Photos photos) {
photos.watch();
}
}
class Games implements Computer {
public void accept(Visitor visitor) {
visitor.visit(this);
}
public void play() {
System.out.println("play lol");
}
}
class Photos implements Computer {
public void accept(Visitor visitor) {
visitor.visit(this);
}
public void watch() {
System.out.println("watch scenery photo");
}
}
class ObjectStructure {
private List<Computer> computers = new ArrayList<Computer>();
public void action(Visitor visitor) {
computers.forEach(c -> {
c.accept(visitor);
});
}
public void add(Computer computer) {
computers.add(computer);
}
public static void main(String[] args) {
ObjectStructure os = new ObjectStructure();
os.add(new Games());
os.add(new Photos());
// 创建一个访问者
Visitor visitor = new ZhangSan();
os.action(visitor);
}
}
転載: www.cnblogs.com/kintanx/p/11444399.html