关注大师姐不迷路,大师姐带你上高度~


前言

关注大师姐不迷路,大师姐带你上高度~

策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,使算法的变化独立于使用它们的客户端。

一、策略模式是什么?

定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换
目的:将算法的使用与算法的实现分离开来
主要解决:在有多种算法相似的情况下,使用 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 分支
提高算法的保密性和安全性:每个算法独立封装
易于扩展:增加新策略无需修改现有代码
符合开闭原则:对扩展开放,对修改关闭
提高代码可维护性:每个策略独立,职责清晰
应用场景
购物车中不同用户的折扣计算
不同支付方式的处理
导航应用中不同的路线规划算法
表单验证的不同策略
策略模式通过将不同的算法封装成独立的类,使得算法可以独立于使用它的客户端而变化,大大提高了系统的灵活性和可维护性。

更多推荐