设计模式——策略模式(行为型模式)

概述:

  什么是策略模式?

            假如我们需要修理一个物品,我们可能需要螺丝刀,扳手,锤子等工具。

            假如我们需要去旅游,可能需要乘坐飞机,火车,汽车等。

            假如我们需要计算一个答案,可能需要用到加,减,乘,除等。

那么按照常规的方式,可能会用if,else,switch来进行一下的条件判断操作,缺点在于代码和环境类(当前类)写到了一起,

那么耦合性就很高,不利于维护,代码规则也是高内聚,低耦合,长话短说,直接上代码,看完就明白了。

 

可以定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

 

代码:

策略接口类

/*
 * 修理策略接口
 */
public interface RepairStrategy {
     
	void repair();
	
}

策越类

/**
 * 扳手修理
 * @author liuchaojun
 *
 */
public class BanshouRepair implements RepairStrategy {

	@Override
	public void repair() {
		// 修理具体方法
		System.out.println("扳手具体修理。。。。。。");
	}

}

/**
 * 锤子修理
 * @author liuchaojun
 *
 */
public class ChuiziRepair implements RepairStrategy{

	@Override
	public void repair() {
		// 修理具体方法
		System.out.println("锤子具体修理。。。。。。");
		
	}

}

/**
 * 螺丝刀修理
 * @author liuchaojun
 *
 */
public class LuosidaoRepair implements RepairStrategy {

	@Override
	public void repair() {
		// 修理具体方法
		System.out.println("螺丝刀具体修理。。。。。。");

	}

}

环境类(当前类)

/**
 * 环境类,当前类
 * @author liuchaojun
 *
 */
public class Repair {
    
	private RepairStrategy repairStrategy;
	
	public Repair(RepairStrategy repairStrategy) {
		 this.repairStrategy = repairStrategy;
	}
	
	//修理物品
	void repairGood(){
		repairStrategy.repair();
	}
	
	
	public static void main(String[] args) {
		Repair repair1 = new Repair(new BanshouRepair());
		repair1.repairGood();
		Repair repair2 = new Repair(new ChuiziRepair());
		repair2.repairGood();
		Repair repair3 = new Repair(new LuosidaoRepair());
		repair3.repairGood();
	}
}

结果:

小结:

   优点: 1.解耦性,避免使用了if else 等条件语句。

               2.如果需要加一种策略,也只需要增加一个策略类即可。

   缺点: 1.如需使用其中策略,必须知道其所有的策略类有哪些。

               2.策略方式一多,会产生很多的策略类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值