Javaの戦略パターンデザインパターン---

    人々を準備するために、あなたはお菓子に割り当てられます

1、戦略パターンは3つの役割があります。

  役割の文脈:OperationStrategy。

  遊びに要約戦略的役割:操作。

  具体的な戦略の役割:OperationAdd、OperationSub。

図2に示すように、特定のコードの実装:

  操作カテゴリ:

パブリックインターフェース操作{ 

二重のgetResult(ダブルNUMA、ダブル無感覚)。

}

  OperationAdd、OperationSubカテゴリ:

パブリッククラスOperationAdd実装オペレーション{ 

@Override
公衆二重のgetResult(ダブルNUMA、ダブル無感覚)が{
NUMA +麻痺を返します。
}
}
パブリッククラスOperationSub実装オペレーション{ 

@Override
公衆二重のgetResult(ダブルNUMA、ダブル無感覚){
NUMAを返す-無感覚。
}
}

  OperationStrategyカテゴリ:

パブリッククラスOperationStrategy { 

プライベート運転操作;

公共OperationStrategy(運転操作)、{
this.operation =オペレーション;
}

公共ダブルexcuteOperation(ダブルNUMA、ダブル無感覚){

リターンoperation.getResult(NUMA、無感覚)

}
}

  入学テストカテゴリ:

publicクラスOperateTest { 

パブリック静的な無効メイン(列[]引数)、{
OperationStrategy動作=新しいOperationStrategy(新しいOperationAdd()、)
System.out.println(operation.excuteOperation(2、3))。

= OperationStrategy operation1新しいOperationStrategy(新OperationSub())
System.out.println(operation1.excuteOperation(3、2))。

}

}

  テスト結果:

  5.0
  1.0

3、与工厂模式的不同:

  可以看出来,代码与简单工厂模式有很多相似的地方,两者之间最大的不同就是工厂类和上下文类;

  在使用的过程中,工厂模式是传入一个条件,然后返回相对应的对象,然后再根据对象去处理逻辑;策略模式,返回同一个对象,但是传参的时候,已经把相对应的对象传进去了;

  可以看出两者的关注点不一样,工厂就是创建对象的,其他的我不管;策略就是知道创建的哪一个对象,然后再逻辑处理。

  可能目前我的理解还不够深,也许以后设计模式的界限根本没有那么大,当自己能力足够的时候,可能自然而然设计出来的代码结构比模式还要好,或者是好几个设计模式一起使用,现在我只能继续学习,以后做的多了可能会更好的理解。

 

おすすめ

転載: www.cnblogs.com/tengri-fighting/p/12665286.html
おすすめ