前言
本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!
一、介绍
单一职责原则 (SRP) 是软件设计中的一个重要原则,它要求每个类只负责一个职责。 如果类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误。
这个原则的重要性在于:
- 降低类的复杂度,一个类只负责一项职责;
- 提高类的可读性,可维护性;
- 降低变更引起的风险;
- 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则;
二、代码演示
假设我们有一个名为
Customer
的类,它负责管理客户的信息和交易。 现在我们想要对这个类进行改进,让它只负责一个职责,也就是管理客户信息和交易。 我们可以考虑采用单一职责原则,将原来的两个职责分开,让Customer
只负责管理客户信息,而交易职责则由另一个类Transaction
来负责。
// 客户类,负责管理客户信息和交易
public class Customer {
private String name;
private int age;
private List<Transaction> transactions;
public Customer(String name, int age) {
this.name = name;
this.age = age;
this.transactions = new ArrayList<>();
}
public void addTransaction(Transaction transaction) {
this.transactions.add(transaction);
}
public void removeTransaction(Transaction transaction) {
this.transactions.remove(transaction);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<Transaction> getTransactions() {
return transactions;
}
}
// 交易类,负责管理交易
public class Transaction {
private String description;
private double amount;
public Transaction(String description, double amount) {
this.description = description;
this.amount = amount;
}
public String getDescription() {
return description;
}
public double getAmount() {
return amount;
}
}
// 客户端类,演示单一职责原则的应用
public class Client {
public static void main(String[] args) {
// 创建客户对象
Customer customer = new Customer("John", 30);
// 创建交易对象
Transaction transaction1 = new Transaction("Buy Coffee", 10.00);
Transaction transaction2 = new Transaction("Sell Stock", 50.00);
// 添加交易到客户对象
customer.addTransaction(transaction1);
customer.addTransaction(transaction2);
// 获取客户信息和交易列表
String name = customer.getName();
int age = customer.getAge();
List<Transaction> transactions = customer.getTransactions();
// 输出客户信息和交易列表
System.out.println("Customer name: " + name + ", age: " + age + ", transactions: " + transactions);
}
}
在上面的代码中,
Customer
类只负责管理客户信息,它拥有了四个方法,分别是addTransaction
,removeTransaction
和getName
,getAge
。Transaction
类只负责管理交易,它拥有了两个方法,分别是getDescription
和getAmount
。
Client
类演示了单一职责原则的应用,它创建了一个Customer
对象,并添加了两个Transaction
对象到它的Customer
对象中。最后,Client
类获取了Customer
对象的Name
和Transaction
列表,并输出了它们。
通过上面的示例,我们可以看到单一职责原则的应用可以让代码更加简洁,易于维护和扩展。
到此这篇关于Java设计模式中单一职责原则详解的文章就介绍到这了,更多相关Java单一职责原则内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!