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
      
  • 相关阅读:
    硬盘任性丢数据,但分布式存储一定可靠吗?
    Service的基本组成
    固定cell.imageView.image的大小
    剪贴板服务
    取得正在运行的Activity
    取得正在运行的服务
    C#.NET学习笔记1---C#.NET简介
    取得手机的网络信息
    四、cocos2dx动画Animation介绍
    C#.NET学习笔记2---C#.第一个C#程序
  • 原文地址:https://www.cnblogs.com/siten0616/p/14134374.html
Copyright © 2011-2022 走看看