您现在的位置是:首页 >学无止境 >设计模式(一):单一职责原则(详解)网站首页学无止境
设计模式(一):单一职责原则(详解)
简介设计模式(一):单一职责原则(详解)
前言
本博主将用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
列表,并输出了它们。
通过上面的示例,我们可以看到单一职责原则的应用可以让代码更加简洁,易于维护和扩展。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。