• 策略模式


    策略模式定义了一系列的算法。并将每个算法封装起来。并且使它们还能够相互替换。

    策略模式让算法独立于使用它的客户而独立变化。

    —抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
    —详细策略角色:包装了相关的算法和行为。

    —环境角色:持有一个策略类的引用,终于给client调用。
    package mode.strategy;
    
    /**
     * @ClassName: IStrategy
     * @Description: 定义了一个策略接口。这是诸葛亮老人家给赵云的三个锦囊妙计的接口
     * @author mpc
     * @date 2014年12月31日 下午4:10:34
     * 
     */
    public interface IStrategy {
    	public void operate();
    }
    

    package mode.strategy;
    
    /** 
    * @ClassName: BackDoor 
    * @Description: 找乔国老帮忙,使孙权不能杀刘备
    * @author mpc 
    * @date 2014年12月31日 下午4:12:19 
    *  
    */
    public class BackDoor implements IStrategy {
    
    	@Override
    	public void operate() {
    		System.out.println("找乔国老帮忙。让吴国太给孙权施加压力,使孙权不能杀刘备。。。

    。。"); } }


    package mode.strategy;
    
    /** 
    * @ClassName: GivenGreenLight 
    * @Description: 求吴国太开个绿灯 
    * @author mpc 
    * @date 2014年12月31日 下午4:14:26 
    *  
    */
    public class GivenGreenLight implements IStrategy {
    
    	@Override
    	public void operate() {
    		System.out.println("求吴国太开绿灯,放行!");
    	}
    
    }

    package mode.strategy;
    
    public class BlackEnemy implements IStrategy {
    
    	@Override
    	public void operate() {
    		System.out.println("孙夫人断后。挡住追兵.........");
    	}
    
    }
    

    package mode.strategy;
    
    /**
     * 
     * 锦囊
     * 
     * */
    public class Context {
    	private IStrategy strategy;
    
    	// 构造函数,要使用带有哪个妙计的锦囊
    	public Context(IStrategy stragtegy) {
    		this.strategy = stragtegy;
    	}
    
    	public void operate() {
    		this.strategy.operate();
    	}
    }

    package mode.strategy;
    
    public class ZhaoYun {
    	/**
    	 * 
    	 * 赵云出场了,他依据诸葛亮给他的交代,依次拆开妙计
    	 * 
    	 **/
    	public static void main(String[] args) {
    		Context context;
    		
    		//到吴国的时候拆开第一个
    		System.out.println("-------------刚到吴国的时候拆开第一个-----------------");
    		context=new Context(new BackDoor());
    		context.operate();
    		System.out.println("---------------第一步搞定--------------------------------");
    	
    		//刘备乐不思蜀的时候拆开第二个
    		System.out.println("--------------乐不思蜀了,拆开第二个-------------------------------");
    		context=new Context(new GivenGreenLight());
    		context.operate();
    		System.out.println("----------------第二步搞定---------------------------------------------");
    	
    		
    		//孙权的追兵到了。拆开第三个
    		System.out.println("---------------孙权的追兵到了,拆开第三个------------------------------------------------");
    		context = new Context(new BlackEnemy());
    		context.operate();
    		System.out.println("---------------------终了----------------------------------------------------");
    	
    	}
    }
    


  • 相关阅读:
    javaweb 最简单的分页技术
    Jquery选择器小结
    JSON 初探
    C# GridView 的使用
    C# 操作数据库
    Java中String为什么是不可变
    Eclipse使用技巧小结
    Java File类方法使用详解
    JSP基础语法总结
    JSP取得绝对路径
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7079378.html
Copyright © 2020-2023  润新知