举个反例
对象的创建和使用没有解耦:
//对象
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and Setter methods...
}
public class UserService {
public void createUser(String name, int age) {
// 直接在UserService中创建User对象,创建和使用混合在一起
User user = new User(name, age);
// 进行其他操作,如保存到数据库...
}
}
该写法的缺点:
- 代码耦合度高:UserService类直接依赖于User类的构造函数。如果User类的构造函数改变,那么UserService类也需要相应修改。
- 代码可读性和可维护性差:对象创建的逻辑和业务逻辑混合在一起,使得代码难以阅读和维护。
- 代码扩展性差:如需要使用不同的用户实现(除user类,如AdminUser或GuestUser),那么需要修改UserService类,这违反了开闭原则。
开闭原则:
1.对扩展开放:意味着软件实体应易于扩展,以适应未来的需求变化,即可以在不改变原有代码的基础上,增加新的功能或行为。
2.对修改关闭:意味着一旦一个软件实体被完成,就不应该因为需求的变化而修改其源代码,以减少修改引入的错误风险和维护成本。