好了,在这里一二三四的列举单一职责的原则不管用,我们需要看看实际的效果才好。现在我们就来看看模式是怎么来遵守这一原则的:
首先,我们来看简单工厂模式。工厂类只有一个功能,就是产生一个个的对象产品。就这么一个简单的功能,但如果我们不把它拿出来,在客户端就会出现这样的代码:
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();
}
这是一个模板类,它只做了一件事,就是所有子类的共同行为;然后去由它的子类单独完成自己的不同的行为。
这样的蓄意让类的职责单一,拥有的好处是:第一、所有的子类的共同行为,只在模板类里构造一次,实现了代码的重用。第二、将各子类不同的行为分配到各子类里去,使得子类极为简单,易于实现。