JAVA设计模式---策略模式

当有一种变化不停的改变它的实现算法的时候,我们就考虑用策略模式


模式目的就是为了让客户使用方使用尽可能少的有关程序的类,知道尽可能少的
实现,策略模式
先把所有的东西都抽像出来,每个具体的算法去实现它,客户端呢,为了让它不
知道服务端的情况,我们使用另外一个类去关联抽像的一个引用,客户只要传来
对某个算法的一个信号就可以的,类结构如下:


               Context----关联抽象-----SuanFa(抽象算法)
                                       - -
                                      -    -
                                     -      -
                                    -         -
                                   SuanFaA(具体算法A)   SuanFaB(具体算法B)

客户端使用:客户端只要有一个Context,然后给Context的构造方法或者某个方法传递
具体算法的一个标识,比如

public class Context {
    private SuanFa suanFa;
    public Context(String s) {
        if(s=="A") {
            suanFa = new SuanFaA();
        }else {
            suanFa = new SuanFaB():
        }
    }

    public void deal() {
       suanFa.deal();
    }
}

客户端只要:
Context context = new Context("A");
context.deal();当然deal方法一般有参数,
这样我们就可以看到我们并不知道具体算法是怎么样实现的,
我们甚至不知道所有算法的抽象是哪个,就能完成我们想要做的
这种设计也是不错的设计。

其实这个Context里的构造方法,每个根据s来创建不同的算法,它就想
一个简单的创建具体算法的简单工厂,生产各种算法,
这里也就好像是策略 模式和简单工厂模式的结合。

猜你喜欢

转载自why7282.iteye.com/blog/1042731