单一原则

简述
就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
举例:

public class DemoEntity {
   @Id
   private int id;
   private String name;
   private String password;

   public void addUser(){}
   public void modify(){}
}

这里的业务方法和属性应该放到不同的类中,每个类承担自己的单一职责,类似于实际开发中的代码分层,使代码简洁易懂,降低耦合度,利于维护和扩展。

如果一个方法逻辑不复杂的情况下,可以修改方法实现,否则要拆分为两个方法,遵循方法级别的单一职责原则;如果一个类方法不多的情况下,可以只增加方法,而不用分拆为多个类,否则要拆分为多个类,遵循类级别的单一职责原则。

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

可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
提高类的可读性,提高系统的可维护性;
变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

不仅是类,方法也应该遵循单一原则,即一个方法只做一件事,比如:

//修改密码
	public class ModifPwdService{
   public void modifypwd(){
       getPwd();
       newPwd();
       md5();
   }
    public void md5(){
        System.out.println("加密密码");
    }
    public void getPwd(){
        System.out.println("获取密码");
    }
    public void newPwd(){
        System.out.println("获取新密码");
    }
}

用一个实例来说明
假设有一个猪场,生产猪头肉,猪蹄,猪耳朵等等,需要怎样来实现?
有三个类,每个类里面有专门生产猪的零件的方法:

public class PigHead{
    public void pigHeads(){
        System.out.println("猪头出来了");
    }
}

public class PigFoot {
   public void pigFoots(){
       System.out.println("猪蹄出来了");
   }
}

public class PigEars {
   public void PigEars(){
       System.out.println("猪耳朵出来了");
    }
}

然后猪场开业了,但是今天货不足,只能卖猪头和猪蹄,那就调用两个类的方法:

	public class SellPig{
    public static void main(String[] args) {
        PigHead pigHead = new PigHead();
        pigHead.pigHeads();
        PigFoot pigFoot = new PigFoot();
        pigFoot.pigFoots();
    }
}

结果:
在这里插入图片描述
假如明天想全都卖,那么只需要调用三个即可:

public class SellPig{
    public static void main(String[] args) {
        PigHead pigHead = new PigHead();
        pigHead.pigHeads();
        PigFoot pigFoot = new PigFoot();
        pigFoot.pigFoots();
        PigEars pigEars = new PigEars();
        pigEars.PigEars();
    }
}

结果:
在这里插入图片描述
但是客户想买肘子的特别多,所以又开始做一个肘子类了:

public class PigMeat {
   public void PigMeats(){
       System.out.println("猪肘子出来了");
    }
}

如果想卖熟的猪头也只需要更改猪头的方法即可,并不会影响到其他类的运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值