zoukankan      html  css  js  c++  java
  • 设计模式(一) 策略模式

    设计模式

    (一)策略模式

    简介:

    关于策略模式,之前知道了一个大概,实际上没有使用过,今天通过一个demo来再次加深一下学习。

    strategy_pattern_uml_diagram

    在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式

    在策略模式中,我们通过创建 **表示各种策略的对象 **和一个 **行为随着策略对象改变而改变的 context 对象 **。策略对象改变 context 对象的执行算法。

    需要创建的类:

    • 一个接口:用于约束

      public interface Strategy{ 
      	public String doOperation();
      }
      
    • 多个策略类

      public class Operation1 implements Strategy{
          //策略1
          @Override
         public String doOperation() {
            return "这是策略1";
         }
      }
      
      public class Operation2 implements Strategy{
          //策略2
          @Override
         public String doOperation() {
            return "这是策略2";
         }
      }
      
    • 一个context类,用于切换策略

      public class Context {
         private Strategy strategy;
       	
         public Context(Strategy strategy){
            this.strategy = strategy;
         } 
          
         //执行策略
         public String executeStrategy(){
            return strategy.doOperation();
         }
      }
      
    • 创建一个Demo 在 main 函数中演示一下:

      public class StrategyPatternDemo {
         public static void main(String[] args) {
            //创建context 使用策略1,调用context中的执行策略方法
            Context context = new Context(new Operation1());    
            System.out.println( context.executeStrategy() );
            //创建context 使用策略2,调用context中的执行策略方法
       	  context = new Context(new Operation2());    
            System.out.println( context.executeStrategy() );
         }
      }
      
    • 结果为:

      这是策略1
      
      这是策略2
      
  • 相关阅读:
    java多线程之停止线程
    An internal error occurred during: "Building workspace". java.lang.StackOverflowError
    我不是一个合格的程序猿
    数论(同余+hash)
    hdu 5119 dP
    使用fatjar来实现将包括第三方jar包的项目到处成一个jar包供其它程序使用
    JavaSwing JScrollPane的使用
    Flex4 布局 元素index
    Flex4 flash builder保留MXML转换的AS代码
    Flex 数据绑定
  • 原文地址:https://www.cnblogs.com/siten0616/p/14134374.html
Copyright © 2011-2022 走看看