MST

星途 面试题库

面试题:Java中如何通过设计原则优化代码结构

请阐述在Java开发中,如何运用单一职责原则(SRP)和开闭原则(OCP)对一段现有的代码进行优化。假设你有一个处理用户登录与用户信息管理的类,试通过这两个设计原则将其重构,并说明重构思路与好处。
46.3万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

重构思路

  1. 单一职责原则(SRP)
    • 原类处理用户登录与用户信息管理,职责过多。根据SRP,将这两个职责拆分到不同类中。
    • 创建UserLoginService类专门负责用户登录相关操作,例如验证用户名密码、生成登录令牌等。
    • 创建UserInfoManagementService类专门负责用户信息管理,如添加、修改、查询用户信息。
  2. 开闭原则(OCP)
    • 对于UserLoginService,如果后续有新的登录方式(如第三方登录),可以通过创建新的类继承UserLoginService,重写相关登录方法来实现,而不是修改UserLoginService类本身。
    • 对于UserInfoManagementService,如果要增加新的用户信息管理操作(如用户信息的备份),可以创建新类继承UserInfoManagementService并实现备份方法,而不修改原类。

重构示例代码(简化示意)

// 原类
class UserService {
    public void login(String username, String password) {
        // 登录逻辑
    }
    public void updateUserInfo(String userId, String newInfo) {
        // 用户信息更新逻辑
    }
}

// 重构后 - 用户登录服务类
class UserLoginService {
    public void login(String username, String password) {
        // 登录逻辑
    }
}

// 重构后 - 用户信息管理服务类
class UserInfoManagementService {
    public void updateUserInfo(String userId, String newInfo) {
        // 用户信息更新逻辑
    }
}

好处

  1. 单一职责原则的好处
    • 提高代码可读性:每个类职责明确,阅读代码时能快速了解其功能。
    • 增强可维护性:当登录逻辑或用户信息管理逻辑需要修改时,只需要关注对应的类,而不会影响其他无关功能。
    • 降低耦合度:不同职责的类之间相互独立,修改一个类不会轻易影响其他类,有利于系统的扩展性和稳定性。
  2. 开闭原则的好处
    • 方便功能扩展:在不修改原有代码的基础上,可以通过继承等方式添加新功能,符合软件的持续发展需求。
    • 避免引入新的错误:不修改原有代码,减少了因修改代码而引入新的缺陷的风险,提高了系统的可靠性。