七大设计模式原则
发布人:shili8
发布时间:2025-02-25 14:59
阅读次数:0
**七大设计模式原则**
在软件开发领域,设计模式是一种反复出现的解决方案,针对特定类型的问题。七大设计模式是最常见、最重要的设计模式,它们为我们提供了一个框架来构建高质量、可维护性和扩展性的代码。
**1. 单一责任原则 (Single Responsibility Principle, SRP)**单一责任原则指出,每个类或模块应该只负责一种功能。也就是说,一个类不应该承担多种职责,这样可以使其更容易维护、测试和理解。
java// Bad example:一个类同时负责数据存储和业务逻辑public class User {
private String name;
private int age;
public void save() { // 数据存储功能 }
public void calculateScore() { //业务逻辑功能 }
}
// Good example: 分离出单独的类来处理不同的职责public class UserRepository {
public void save(User user) { /*数据存储功能*/ }
}
public class UserBusinessLogic {
public int calculateScore(User user) { /*业务逻辑功能*/ }
}
**2. 开放-闭合原则 (Open-Closed Principle, OCP)**开放-闭合原则指出,一个软件组件应该对扩展开放,对修改关闭。也就是说,当需要添加新功能时,可以通过扩展而不是修改现有代码来实现。
java// Bad example: 需要修改现有代码来添加新功能public class PaymentProcessor {
public void processPayment(Payment payment) { /*处理支付逻辑*/ }
}
// Good example:通过扩展来添加新功能public interface PaymentProcessor {
void processPayment(Payment payment);
}
public class CreditCardPaymentProcessor implements PaymentProcessor {
@Override public void processPayment(Payment payment) { /*处理信用卡支付逻辑*/ }
}
public class PayPalPaymentProcessor implements PaymentProcessor {
@Override public void processPayment(Payment payment) { /*处理PayPal支付逻辑*/ }
}
**3. 接口隔离原则 (Interface Segregation Principle, ISP)**接口隔离原则指出,一个类不应该实现多个接口,它们之间没有共同点。也就是说,每个接口应该专注于一种特定的功能。
java// Bad example:一个类同时实现两个接口public class User implements Loginable, Registerable {
public void login() { /*登录逻辑*/ }
public void register() { /*注册逻辑*/ }
}
// Good example: 分离出单独的接口来处理不同的功能public interface Loginable {
void login();
}
public interface Registerable {
void register();
}
**4.依赖倒置原则 (Dependency Inversion Principle, DIP)**依赖倒置原则指出,高层次模块不应该依赖于低层次模块,而是两者都应该依赖于抽象接口或第三方库。
java// Bad example: 高层次模块直接依赖于低层次模块public class Controller {
private Service service;
public void handleRequest() { /*处理请求逻辑*/ }
}
public class Service {
public void processRequest() { /*处理请求逻辑*/ }
}
// Good example:通过抽象接口来实现依赖倒置public interface RequestProcessor {
void processRequest();
}
public class Controller {
private RequestProcessor requestProcessor;
public void handleRequest() { /*处理请求逻辑*/ }
}
public class Service implements RequestProcessor {
@Override public void processRequest() { /*处理请求逻辑*/ }
}
**5.命令模式 (Command Pattern)**命令模式指出,将一个请求或操作封装在一个对象中,使得可以参数化、队列化和日志记录这些请求。
java// Bad example: 直接执行命令public class Light {
public void turnOn() { /*打开灯*/ }
}
public class Button {
private Light light;
public void press() { /*按下按钮*/ }
}
// Good example: 使用命令对象来封装和执行命令public interface Command {
void execute();
}
public class TurnOnLightCommand implements Command {
@Override public void execute() { /*打开灯*/ }
}
public class Button {
private Command command;
public void press(Command command) { /*按下按钮*/ }
}
**6.观察者模式 (Observer Pattern)**观察者模式指出,定义一个一对多的关系,使得当一个对象改变时,它的依赖者都能收到通知。
java// Bad example: 直接修改被观察者public class WeatherStation {
public void updateWeather() { /*更新天气*/ }
}
public class Forecast {
private WeatherStation weatherStation;
public void receiveForecast() { /*接收预报*/ }
}
// Good example: 使用观察者对象来实现一对多的关系public interface Observer {
void update();
}
public class WeatherStation {
private List observers;
public void addObserver(Observer observer) { /*添加观察者*/ }
public void notifyObservers() { /*通知观察者*/ }
}
**7.状态模式 (State Pattern)**状态模式指出,允许一个对象在其内部状态改变时改变它的行为。
java// Bad example: 直接修改状态public class Light {
private boolean isOn;
public void turnOn() { /*打开灯*/ }
}
public class Button {
private Light light;
public void press() { /*按下按钮*/ }
}
// Good example: 使用状态对象来实现状态的改变和行为的变化public interface State {
void handleEvent();
}
public class OnState implements State {
@Override public void handleEvent() { /*打开灯*/ }
}
public class OffState implements State {
@Override public void handleEvent() { /*关闭灯*/ }
}
以上就是七大设计模式原则的总结。这些原则对于构建高质量、可维护性和扩展性的代码至关重要。

