技术开发 频道

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

   好了,在这里一二三四的列举单一职责的原则不管用,我们需要看看实际的效果才好。现在我们就来看看模式是怎么来遵守这一原则的:

    首先,我们来看简单工厂模式。工厂类只有一个功能,就是产生一个个的对象产品。就这么一个简单的功能,但如果我们不把它拿出来,在客户端就会出现这样的代码:

    if(type.equals(“apple”))

    {

    Apple apple = new Apple();

    ……

    }

    else if(type.equals(“orange”))

    {

    Orange orange = new Orange();

    ……

    }

    else if(type.equals(“Banana”))

    {

    Banana banana = new Banana();

    ……

    }

    有了工厂,我们的客户端就变成这样:

    Fruit fruit = Factory.getInstance(type);

    ……

    我们的客户端调用起来多么的简单,而且系统扩展起来也与客户端无关。

    我们再来看模板方法模式。

    public abstract class Template {

    public void totalAction()

    {

    commonAction();

    differentAction();

    }

    private void commonAction()

    {

    //......

    }

    public abstract void differentAction();

    }

    这是一个模板类,它只做了一件事,就是所有子类的共同行为;然后去由它的子类单独完成自己的不同的行为。

    这样的蓄意让类的职责单一,拥有的好处是:第一、所有的子类的共同行为,只在模板类里构造一次,实现了代码的重用。第二、将各子类不同的行为分配到各子类里去,使得子类极为简单,易于实现。

0
相关文章