• 设计模式之二 策略模式


    
    

     1 /**
    2 * 文件名:strategy.java
    3 *
    4 * 版本信息:
    5 * 日期:2011-12-12
    6 * Copyright 陈亚坤 Corporation 2011
    7 * 版权所有
    8 *
    9 */
    10 package byME;
    11
    12 /**
    13 *
    14 * 项目名称:Design Pattern 类名称:strategy 类描述: 创建人:chenyakun 创建时间:2011-12-12
    15 * 下午05:02:31 修改人:chenyakun 修改时间:2011-12-12 下午05:02:31 修改备注:
    16 *
    17 * @version
    18 *
    19 */
    20 abstract class Strategy {
    21
    22 // 算法方法
    23 public abstract void AlgorithmInterface();
    24
    25 }
    26
    27 // ConcreteStrategy,封装了具体的算法或行为,继承了Strategy
    28 class ConcreteStrategyA extends Strategy {
    29
    30 /*
    31 * (non-Javadoc)
    32 *
    33 * @see strategy.Strategy#AlgorithmInterface()
    34 */
    35 @Override
    36 public void AlgorithmInterface() {
    37 System.out.println("ConcreteStrategyA.AlgorithmInterface()");
    38 }
    39
    40 }
    41
    42 // ConcreteStrategy,封装了具体的算法或行为,继承了Strategy
    43 class ConcreteStrategyB extends Strategy {
    44
    45 /*
    46 * (non-Javadoc)
    47 *
    48 * @see strategy.Strategy#AlgorithmInterface()
    49 */
    50 @Override
    51 public void AlgorithmInterface() {
    52 System.out.println("ConcreteStrategyB.AlgorithmInterface()");
    53 }
    54
    55 }
    56
    57 // Context,用一个ConcreteStategy 来配置,维护strategy对象的引用
    58 class Context {
    59
    60 Strategy strategy;
    61
    62 public Context(Strategy strategy) {
    63 this.strategy = strategy;
    64 }
    65
    66 /*
    67 * 根据具体的策略对象,调用其算法的方法。
    68 */
    69 public void ConcreteInterface() {
    70 strategy.AlgorithmInterface();
    71 }
    72 }
    73
    74 // 客户端实现
    75 class Client {
    76 public static void main() {
    77 Context context;
    78
    79 // 调用策略StrategyA
    80 context = new Context(new ConcreteStrategyA());
    81 context.ConcreteInterface();
    82
    83 // 调用策略StrategyB
    84 context = new Context(new ConcreteStrategyB());
    85 context.ConcreteInterface();
    86 }
    87
    88 }
    89
    90 /*
    91 * 如果需要增加新的策略,只需设计新的继承Strategy,改写AlgorithmInterface方法,封装新的算法即可。 不需要改动客户端。
    92 */
  • 相关阅读:
    HDU 1288 Hat's Tea
    一二三 湖南第七届省赛
    报数游戏 湖南省第七届省赛
    FZOJ--2221-- RunningMan 福建第六届省赛
    Problem 2214 Knapsack problem 福建第六届省赛
    FZU 2212 Super Mobile Charger 第六届福建省赛
    FZU 2213 Common Tangents 第六届福建省赛
    1002: Prime Path
    wampserver apache2.4.9允许外网访问
    SCU 4438 字符串哈希
  • 原文地址:https://www.cnblogs.com/yakun/p/2285231.html
Copyright © 2020-2023  润新知