第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

每天一個設(shè)計(jì)模式·策略模式

0. 项目地址

作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript靠这吃饭)和python纯粹喜欢)两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :)

1. 什么是策略模式?

策略模式定义:就是能够把一系列“可互换的”算法封装起来,并根据用户需求来选择其中一种。

**策略模式实现的核心就是:将算法的使用和算法的实现分离。**算法的实现交给策略类。算法的使用交给环境类,环境类会根据不同的情况选择合适的算法。

2. 策略模式优缺点

在使用策略模式的时候,需要了解所有的“策略”(strategy)之间的异同点,才能选择合适的“策略”进行调用。

3. 代码实现

3.1 python3实现

class Stragegy():
  # 子类必须实现 interface 方法
  def interface(self):
    raise NotImplementedError()

# 策略A
class StragegyA():
  def interface(self):
    print("This is stragegy A")

# 策略B
class StragegyB():
  def interface(self):
    print("This is stragegy B")

# 环境类:根据用户传来的不同的策略进行实例化,并调用相关算法
class Context():
  def __init__(self, stragegy):
    self.__stragegy = stragegy()
  
  # 更新策略
  def update_stragegy(self, stragegy):
    self.__stragegy = stragegy()
  
  # 调用算法
  def interface(self):
    return self.__stragegy.interface()


if __name__ == "__main__":
  # 使用策略A的算法
  cxt = Context( StragegyA )
  cxt.interface()

  # 使用策略B的算法
  cxt.update_stragegy( StragegyB )
  cxt.interface()

3.2 javascript实现

// 策略类
const strategies = {
  A() {
    console.log("This is stragegy A");
  },
  B() {
    console.log("This is stragegy B");
  }
};

// 环境类
const context = name => {
  return strategies[name]();
};

// 调用策略A
context("A");
// 调用策略B
context("B");

4. 参考

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消