人々を準備するために、あなたはお菓子に割り当てられます!
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、与工厂模式的不同:
可以看出来,代码与简单工厂模式有很多相似的地方,两者之间最大的不同就是工厂类和上下文类;
在使用的过程中,工厂模式是传入一个条件,然后返回相对应的对象,然后再根据对象去处理逻辑;策略模式,返回同一个对象,但是传参的时候,已经把相对应的对象传进去了;
可以看出两者的关注点不一样,工厂就是创建对象的,其他的我不管;策略就是知道创建的哪一个对象,然后再逻辑处理。
可能目前我的理解还不够深,也许以后设计模式的界限根本没有那么大,当自己能力足够的时候,可能自然而然设计出来的代码结构比模式还要好,或者是好几个设计模式一起使用,现在我只能继续学习,以后做的多了可能会更好的理解。