TS设计模式之策略模式
·
关注大师姐不迷路,大师姐带你上高度~
文章目录
前言
关注大师姐不迷路,大师姐带你上高度~
策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,使算法的变化独立于使用它们的客户端。
一、策略模式是什么?
定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换
目的:将算法的使用与算法的实现分离开来
主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护的问题
例子:出行选择交通方式,步行、骑车、开车、坐公交、坐地铁等
二、使用步骤
详解
代码如下:
//解决朵多个分支if...else...if...else条件问题
//例如去一个地方选择不同的交通路线等
//每个分支单独处理
//例如商城的vip身份等
//正常的写法
class User {
private type: string
constructor(type: string) {
this.type = type
}
buy() {
const { type } = this
if (type === 'vip') {
console.log('vip');
}
if (type === 'spuvip') {
console.log('spuvip');
}
if (type === 'spuvip1') {
console.log('spuvip1');
}
}
}
//策略模式
interface IUser {
buy: () => void
}
class OrdinaryUser implements IUser {
buy() {
console.log('普通用户购买');
}
}
class MemberUser implements IUser {
buy() {
console.log('会员用户购买');
}
}
class VipUser implements IUser {
buy() {
console.log('vip用户购买');
}
}
const user1 = new OrdinaryUser()
user1.buy()
总结
关注大师姐不迷路,大师姐带你上高度~
策略模式的优势
消除复杂的条件判断:避免多重 if…else 分支
提高算法的保密性和安全性:每个算法独立封装
易于扩展:增加新策略无需修改现有代码
符合开闭原则:对扩展开放,对修改关闭
提高代码可维护性:每个策略独立,职责清晰
应用场景
购物车中不同用户的折扣计算
不同支付方式的处理
导航应用中不同的路线规划算法
表单验证的不同策略
策略模式通过将不同的算法封装成独立的类,使得算法可以独立于使用它的客户端而变化,大大提高了系统的灵活性和可维护性。
更多推荐


所有评论(0)