策略模式



package com.moshi.celv;


public interface Caluator {

public void testcal(int a,int b);


}



package com.moshi.celv;


public class AddCal implements Caluator {


public void testcal(int a, int b) {
System.out.println("add--"+(a+b));


}

package com.moshi.celv;


public class ChengCal implements Caluator {


public void testcal(int a, int b) {
System.out.println("cheng--"+a*b);


}


}


package com.moshi.celv;


public class Context {

Caluator cal;

public Context(Caluator cal){
this.cal=cal;
}


public Caluator getCal() {
return cal;
}


public void setCal(Caluator cal) {
this.cal = cal;
}

public void testcal(int a,int b){
cal.testcal(a, b);

}


}


package com.moshi.celv;


public class Testcelv {


/**
策略模式(Strategy):策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,
只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。

策略模式和简单工厂模式有很多相似的地方,他是针对不同的算法对其进行封装,更强调的是对一种方法的封装。策略模式里面没有产生策略对象的方法,他是要接收每个策略或者算法对象的,产生算法对象的任务是交给客户端来完成,在客户端里面,用户需要根据具体情况生成对应的算法对象。Context类是就是对一种算法的引用,Context类接收算法对象,并提供给用户返回算法结果的方法,算法的实际调用也是在这个方法中进行的。所以,策略模式更加强调的是对方法的封装




简单的说,


1、工厂模式根据条件生产出产品给客户端用。而策略模式是客户端使用传参给Context的策略(你也可以理成产品),
传入策略的不同,调用同样方法得到的结果也不同。
2、工厂模式:客户端是使用工厂类生产的对象进行操作,策略模式:客户端使用自己传给Context的策略的对象进行操作。
* @param args
*/
public static void main(String[] args) {
Context con=new Context(new AddCal());
        con.testcal(1, 2);
        
}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值