设计模式原则之单一职责

单一职责:通俗地讲,即一个类只负责一项职责

问题:例如一个类(打印机P类)负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类P类,有可能导致原本正常运行的职责P2功能发生故障。


比如

class Animal{

    public void breathe(String animal){

        System.out.println(animal+"呼吸空气");

    }

}

public class Client{

    public static void main(String[] args){

        Animal animal = new Animal();

        animal.breathe("牛");

        animal.breathe("羊");

        animal.breathe("猪");

    }

}


运行结果:

牛呼吸空气

羊呼吸空气

猪呼吸空气


程序上线后,发现问题了,并不是所有的动物都呼吸空气的,比如鱼就是呼吸水的。修改时如果遵循单一职责原则,需要将Animal类细分为陆生动物类Terrestrial,水生动物Aquatic,代码如下:

class Terrestrial{

    public void breathe(String animal){

        System.out.println(animal+"呼吸空气");

    }

}

class Aquatic{

    public void breathe(String animal){

        System.out.println(animal+"呼吸水");

    }

}

public class Client{

    public static void main(String[] args){

        Terrestrial terrestrial = new Terrestrial();

        terrestrial.breathe("牛");

        terrestrial.breathe("羊");

        terrestrial.breathe("猪");


        Aquatic aquatic = new Aquatic();

        aquatic.breathe("鱼");

    }

}

运行结果:

牛呼吸空气

羊呼吸空气

猪呼吸空气

鱼呼吸水


遵循单一职责原的优点有:

可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;

提高类的可读性,提高系统的可维护性;

变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式六大原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类...
    viva158阅读 4,119评论 0 1
  • 目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...
    加油小杜阅读 4,021评论 0 1
  • 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 ...
    鲍陈飞阅读 3,762评论 0 4
  • 腊月二十四,柳红接到了调令信,春节之后她就可以调回她家所在的城市上海了。柳红,40岁,某军区特工上校。若不...
    含香绽放0475阅读 3,928评论 8 10
  • 有难过的事,你不哭,你还憋着,奥特了吧!哭哭总比笑笑好一些。 曾经的北漂,现在的天津漂,曾经的壮志毫言,现在的苦不...
    写自己的梦阅读 1,423评论 0 0