首页 > 其他分享 >面向对象的7种设计原则(1)-单一职责原则

面向对象的7种设计原则(1)-单一职责原则

时间:2022-09-20 16:00:48浏览次数:54  
标签:... 职责 原则 System 面向对象 animal println public out

永远不要让一个类存在多个改变的理由。

单一原则表明,如果你有多个原因去改变一个类,那么应该把这些引起变化的原因分离开,把这个类分成多个类,每个类只负责处理一种改变。当你做出某种改变时,只需要修改负责处理该改变的类。当我们去改变一个具有多个职责的类时可能会影响该类的其他功能

单一职责原则代表了设计应用程序时一种很好的识别类的方式,并且它提醒你思考一个类的所有演化方式。只有对应用程序的工作方式有了很好的理解,才能很好的分离职责。

单一职责原则原则的核心含意是:只能让一个类/接口/方法有且仅有一个职责。

案例:

public class Animal {
    public void run(String animal){
        System.out.println(animal+"running on the land...");
    }
     public static void main(String[] args) {
        Animal animal = new Animal();
        animal.run("狗");
        animal.run("牛");
        animal.run("马");
    }
}

运行结果:

狗running on the land...
牛running on the land...
马running on the land...

然而并不是所有的动物都在陆地上奔跑,鸟在天上飞,鱼在水中游。这时的Animal类就不符合单一职责,需要将Animal进行细分。

第一种:

    class Aquatic{
        public void run(String animal){
            System.out.println(animal+"swimming in the water...");
        }
    }

    class Terrestrial{
        public void run(String animal){
            System.out.println(animal+"running on the land...");
        }
    }

    class Birds{
        public void run(String animal){
            System.out.println(animal+"flying in the sky...");
        }
    }

第二种:

这种修改方式直接在代码级别上违背了单一职责原则,虽然修改起来最简单,但隐患却是最大的。

public class Animal {

    public void run(String animal){
        if("fish".equals(animal)){
            System.out.println(animal+"swimming in the water...");
        }else if("bird".equals(animal)){
            System.out.println(animal+"flying in the sky...");
        }else{
            System.out.println(animal+"running on land...");
        }
    }
}

第三种:

这种修改方式没有改动原来的方法,而是在类中新加了一个方法,这样虽然也违背了单一职责原则,但在方法级别上却是符合单一职责原则的,因为它并没有动原来方法的代码。

public class Animal {

    public void run1(String animal){
            System.out.println(animal+"running on land...");
    }
    
    public void run2(String animal){
        System.out.println(animal+"flying in the sky...");
    }
    
    public void run3(String animal){
        System.out.println(animal+"swimming in the water...");
    }
}

单一职责原则虽然它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实践经验。

标签:...,职责,原则,System,面向对象,animal,println,public,out
From: https://www.cnblogs.com/leepandar/p/16711348.html

相关文章

  • 面向对象的7种设计原则(2)-接口隔离原则
    定义InterfaceSegregationPrinciple客户端不应依赖它不需要的接口类间的依赖关系应该建立在最小的接口上其实通俗来理解就是,不要在一个接口里面放很多的方法,这......
  • 面向对象的7种设计原则(7)-开闭原则
    开闭原则开闭原则是面向对象世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活,可扩展的系统。开闭原则定义如下:Softwareentitieslikeclasses,modulesandfunct......
  • 面向对象的7种设计原则(6)-迪米特原则
    迪米特原则迪米特原则(LawofDemeter)又叫最少知道原则(LeastKnowledgePrinciple),可以简单说成:talkonlytoyourimmediatefriends,只与你直接的朋友们通信,不要跟“陌生......
  • 面向对象的7种设计原则(5)-里氏代换原则
    定义里氏代换原则(LiskovSubstitutionPrincipleLSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只......
  • 面向对象---多态的基础语法
    多态的基础语法Q:什么是多态?A:多种形态,多种状态。学习多态基础语法之前,我们需要普及两个概念。注意---java中允许向上转型,也允许向下转型无论是向上转型,还是向下转型,两......
  • 面向对象
    面向对象目录面向对象面向过程&面向对象的关联面向对象本质特点三大特性面向过程&面向对象的关联​在我们真正接触面向对象之前,我们要先回顾一下什么是面向过程。面向......
  • Java面向对象数据结构完全学习教程 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1m6FOQFqsjqYSbKXKs8zHjQ点击这里获取提取码 ......
  • 设计模式---六大设计原则
    六大设计原则单一职责原则接口隔离原则开闭原则依赖倒置原则里氏代换原则迪米特法则单一职责原则我们分别看两个案例,一个是遵守单一职责原则,另一个是违背。违背......
  • Day5 java面向对象的学习
    Day5回顾方法static静态方法不加static非静态方法static是和类一起加载的类与对象的创建类是一种抽象的数据类型,是对某一事物整体的描述对象是抽象概念的具体事......
  • 面向对象编程三大特征(封装、继承和多态)
    1基本介绍面向对象编程有三大特征:封装、继承和多态。2封装介绍3封装的理解和好处4封装的实现步骤(三步)5案例不能随便查看人的年龄,工资等隐私,并对设置的年......