设计模式七大原则深度解析与应用实践
一、单一职责原则(SRP)
1.1 原则讲解
一个类应该只有一个引起它变化的原因。
1.2 代码示例
// 违反SRP的类
class User {
void login() { /* 登录逻辑 */ }
void sendEmail() { /* 发送邮件逻辑 */ }
}
// 符合SRP的类
class UserAuth {
void login() { /* 登录逻辑 */ }
}
class EmailService {
void sendEmail() { /* 发送邮件逻辑 */ }
}
1.3 应用场景
电商系统中,用户管理和邮件通知功能分离,避免修改邮件逻辑影响用户认证。
二、开闭原则(OCP)
2.1 原则讲解
软件实体应对扩展开放,对修改关闭。
2.2 代码示例
// 违反OCP的设计
class DiscountCalculator {
double calculate(String type) {
if (type.equals("VIP")) return 0.8;
else return 1.0;
}
}
// 符合OCP的设计
interface DiscountStrategy {
double applyDiscount();
}
class VIPDiscount implements DiscountStrategy {
@Override
double applyDiscount() { return 0.8; }
}
2.3 应用场景
电商促销系统,新增折扣类型时无需修改原有代码。
(其他原则内容类似,此处省略部分内容...)
七、合成复用原则(CARP)
7.1 原则讲解
优先使用对象组合,而非类继承。
7.2 代码示例
// 使用继承
class Bird {
void fly() {}
}
class Penguin extends Bird {} // 企鹅不会飞,违反CARP
// 使用组合
class FlyingAbility {
void fly() {}
}
class Bird {
private FlyingAbility flyingAbility;
void fly() { flyingAbility.fly(); }
}
7.3 应用场景
游戏开发中,角色技能通过组合动态扩展。
总结
通过电商系统、日志系统等场景,展示了七大原则的实际应用价值。