技术开发 频道

由模式谈面向对象的基本原则之单一职责原则

    命令模式和策略模式的原理都相同,命令模式是对行为的封装,而策略模式是对算法的封装。两者都是要把相同的关注点和对他们的调用分离开,如命令模式是将行为和对它们的调用分离开,而策略模式是将算法和对它们的调用分离开。这里我们只以命令模式来说明问题。

    If(condition1)

    {

    //condition1下的行为

    doThing1();

    }

    else if(condition2)

    {

    //condition2下的行为

    doThing2();

    }

    else if(condition3)

    {

    //condition3下的行为

    doThing3();

    }

    ……

    命令模式可以方便的对上面的代码进行优化:

    public interface Common

    {

    public void doThing();

    }

    public class Common1 implements Common

    {

    public void doThing()

    {

    //condition1下的行为

    doThing1();

    }

    }

    public class Common2 implements Common

    {

    public void doThing()

    {

    //condition2下的行为

    doThing2();

    }

    }

    public class Common13implements Common

    {

    public void doThing()

    {

    //condition3下的行为

    doThing3();

    }

    }

    客户端:

    Common common;

    If(condition1) common = new Common1();

    else if(condition2) common = new Common2();

    else if(condition3) common = new Common3();

    common.doThing();

    命令模式通过将行为从调用者那里分离出来,达到了下面几个目的:第一,分离关注,对各个行为进行单独的关注,减少错误的出现。不管是对行为类还是它的调用者,都变得简单。第二,行为类通过对接口的实现,使得它们的调用者可以对它们进行动态绑定,增加了程序的灵活性和扩展性。

0
相关文章