zoukankan      html  css  js  c++  java
  • 设计模式:策略模式

    策略模式,相信大家都不很陌生,但是对于初学者,可能不是很明白。

    现在由我给大家讲讲策略模式。

    根据我的理解,大家可以把策略模式的使用想象成一个人要写作业,写作业可以用不同的笔,这里不同的笔就是不同的策略了。


    下面给出示例,逐一解释。

    Tools.java这个类就是抽象的策略角色,也就是笔这个抽象角色

    public interface Tools {
    	public void write();
    }


    Pen.java这个是一个具体的策略,钢笔

    public class Pen implements Tools {
    
    	@Override
    	public void write() {
    		System.out.println("我用钢笔写作业");
    
    	}
    
    }


    Pencil.java 这个是一个具体的策略,铅笔

    public class Pencil implements Tools {
    
    	@Override
    	public void write() {
    		System.out.println("我用铅笔写作业");
    
    	}
    
    }
    


    BallPointPen.java 这个是一个具体的策略,圆珠笔

    public class BallPointPen implements Tools {
    
    	@Override
    	public void write() {
    		System.out.println("我用圆珠笔写作业");
    
    	}
    
    }


    策略的抽象角色和策略的一些具体实现我们都定义好了


    下面我们还缺少使用这些策略的角色,也就是策略模式当中的 环境角色。

    环境角色应该持有一个抽象策略接口的引用。

    示例:Person.java

    public class Person {
    
    	private Tools tools;
    	
    	public Tools getTools() {
    		return tools;
    	}
    
    	public void setTools(Tools tools) {
    		this.tools = tools;
    	}
    
    	public Person(Tools tools)
    	{
    		this.tools = tools;
    	}
    	
    	public void write()
    	{
    		this.tools.write();
    	}
    }


    策略模式的使用:

    UseCase.java

    public class UseCase {
    
    	public static void main(String[] args) {
    		Person person = new Person(new Pen());
    		person.write();
    		person.setTools(new Pencil());
    		person.write();
    	}
    }



  • 相关阅读:
    iphone、UI设计和PKM的混谈
    社保名单核对的难题
    LVDS技术原理和设计简介
    系统级芯片设计语言和验证语言的发展
    芯片封装(Chip Package)类型70种
    数字电平标准 TTL CMOS ECL LVDS CML...
    什么是施密特触发器(Schmitt Trigger)?
    组合逻辑电路中竞争冒险的分析
    ASIC设计流程(ASIC design flow)
    这18条背下来没人敢和你忽悠CPU
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3132923.html
Copyright © 2011-2022 走看看