皇冠新体育APP

IT技术之家

java设计模式1,单一职责原则_哪 吒

更新的时间:2023-08-22 22:37:30 Java 7次 标签:java 设计模式 单一职责原则 皇冠新体育APP:云原生 原力计划
单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。...

目录

一、单一职责原则定义二、模拟场景三、违背原则方案1、配置类2、逻辑代码3、测试类 四、单一职责原则改善代码1、定义接口2、实现类,普通用户3、实现类,专属用户4、VIP用户

一、单一职责原则定义

单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式与实践》一书中给出的。马丁表示此原则是基于汤姆·狄马克(Tom DeMarco)和Meilir Page-Jones的著作中的内聚性原则发展出的。
所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。

二、模拟场景

可以通过关注哪吒特刊的环境说明书怎么写一次。 1、常规手机用户,一半才能查询哪吒的常规经典文章,并顺利通过超链的风格時刻信息提示着二者,要购置哪吒的收钱栏目,收钱只是那就是香。 2、专属于用户组,根据选购专刊的类型翻看分散化专刊的上等新闻稿件,并经常温馨提示着,要选购所有专刊啊,你以为学习的也是霸道。 3、VIP业主(推送了哪吒的全部特刊),既可看《Java核心基础教程系》,也可看《Spring Boot 升品入门》,无推荐,再见CRUD,升品二级Java施工师,升职提薪,迎娶白富美。

三、违背原则方案

后面 基于的需求应用场景就直接编码查询,基于有所不同业主,分辩阅读赏析权限设置。

1、配置类

package com.guor.config;

public class AppConfig {

    public static final String USER_GENERAL = "普通用户";
    public static final String USER_EXCLUSIVE = "专属用户";
    public static final String USER_VIP = "VIP用户";

}

2、逻辑代码

package com.guor.designprinciples;

import com.guor.config.AppConfig;

public class UserService {
    public void readByType(String userType){
        if(AppConfig.USER_GENERAL.equals(userType)){
            System.out.println("可以查阅哪吒的普通文章");
        }else if(AppConfig.USER_EXCLUSIVE.equals(userType)){
            System.out.println("可以查阅哪吒的Java基础教程系列文章");
        }else if(AppConfig.USER_VIP.equals(userType)){
            System.out.println("可以查阅哪吒的全部优质文章,告别CRUD,进阶高级Java工程师,升职加薪,迎娶白富美");
        }
    }
}

这般很简单,so seay!commit,还需准备,开门! 第二种天,副总来找到我,要上升一实际需求,逢年过年节的要给哪吒VIP收取褔利,打个比方购买漂亮绝伦阅览室,购买漂亮绝伦近郊等。 看一起也那么简单易行,只有增多一名ifesle就万事了,不过了,是 一名高级的Java开发建设市政机电工程师,写好几回堆ifelse,不易脸颊发红吗?

3、测试类

public static void main(String[] args) {
        UserService userService = new UserService();
        userService.readByType(AppConfig.USER_GENERAL);
        userService.readByType(AppConfig.USER_EXCLUSIVE);
        userService.readByType(AppConfig.USER_VIP);
    }
是由于UserService韵达过一款ifelse满足原理,那么调节的时会所以玩家都进行一款工艺满足,在轻松的或者是不需要再更改的工作比喻,也还就能够。假如再增多其它的需要,各个方面次需要的满足都有机会印象到另一原理,给整体的插口精准服务创造不可控性的的风险,是由于码只需要改动了,就该测式一个,对吧!

四、单一职责原则改善代码

要所需满足副总往往更替的所需,无法运行一两个类把各个的客户的行为混为一谈,往往所需保证一两个顶层的电源接口类,对的不同的客户根据专门的建立类,清晰明确自身的岗位职责权限边缘,断定一两个类的多元化岗位职责权限。

1、定义接口

名词解释要控制的功能键,仔细阅读本文、营销取舍。
package com.guor.service;

public interface IUserService {
    // 阅读文章
    void read();

    // 推广宣传
    void promote();
}

2、实现类,普通用户

package com.guor.service.impl;

import com.guor.service.IUserService;

/**
 * 普通用户
 */
public class GeneralUserServiceImpl implements IUserService {
    public void read() {
        System.out.println("可以查阅哪吒的普通文章");
    }

    public void promote() {
        System.out.println("并通过超链的形式时刻提醒着它们,要购买哪吒的付费专栏,付费知识就是香");
    }
}

3、实现类,专属用户

package com.guor.service.impl;

import com.guor.service.IUserService;

/**
 * 专属用户
 */
public class ExclusiveUserServiceImpl implements IUserService {
    public void read() {
        System.out.println("通过购买专栏的形式查阅单一专栏的优质文章");
    }

    public void promote() {
        System.out.println("并通过超链的形式时刻提醒着它们,购买哪吒的其它付费专栏,付费知识就是香");
    }
}

4、VIP用户

package com.guor.service.impl;

import com.guor.service.IUserService;

/**
 * VIP用户
 */
public class VipUserServiceImpl implements IUserService {
    public void read() {
        System.out.println("脚踩风火轮,手拿乾坤圈,学习哪吒优质文章,我命由我不由天。");
    }

    public void promote() {
        System.out.println("告别CRUD,进阶高级Java工程师,升职加薪,迎娶白富美");
    }
}

多种使用者名相当于的阅读训练访问权限控制都会相当于的达到类,会充分打扰。当某个类使用者名需移除新的访问权限控制或加剧新的使用者名门类时,实际操作来也十分的方便简洁。列如以上中提出的逢年中秋节的要给哪吒VIP申领活动,列如赠给精致绝伦书刊,赠给精致绝伦周边地区等。


通过利用单一职责原则优化后,现在每个类只负责自己的用户行为,后续无论扩展新的功能还是增加用户种类,都可以很方便的开发和维护。
在项目开发的过程中,尽可能保证接口的定义、类的实现保持单一职责,对项目后期的迭代和维护会有很大的帮助。