javascript 与设计模式 (1)

假设一个导演需要拍一部戏,需要演员和摄影师,导演喊action,工作人员各就各位
// 摄影师
class Photographer {
  record() {
    console.log('start record')
  }
}
// 演员
class Actors {
  performance() {
    console.log('start performance')
  }
}

// 导演
class Director {
  action() {
    console.log('各部门准备,开始!')
    const photographer = new Photographer()
    const actors = new Actors()
    photographer.record()
    actors.performance()
  }
}

const director = new Director()
director.action()
现在我需要再加一个灯光师
class LightingEngineer {
  openLight() {
    console.log('open light')
  }
}

class Director {
  action() {
    console.log('各部门准备,开始!')
    const photographer = new Photographer()
    const actors = new Actors()
    const lightingEngineer = new LightingEngineer()
    photographer.record()
    actors.performance()
    lightingEngineer.openLight()
  }
}
const director = new Director()
director.action()

#####后面又需要加道具,声音,副导演等等,然后导演累死了
#####因为每次导演喊开始时都必须对工作人员分配不同任务,这样非常容易出错,导演累死也是必然的.


#####而实际场景中,都是导演喊"工作人与各就各位,action!" 大家就开始了自己的工作. #####经过培训的工作人员都会知道导演喊action 自己需要做什么,所以我们应该怎么修改代码呢?

#####给每个人员添加自己的action方法
class Photographer {
record() {
console.log(‘start record’)
}
action() {
this.record()
}
}
class Actors {
performance() {
console.log(‘start performance’)
}
action() {
this.performance()
}
}
class LightingEngineer {
openLight() {
console.log(‘open light’)
}
action() {
this.openLight()
}
}

// 将工作人员实例当作参数传入action 方法
class Director {
  action(members) {
    members.map(member => {
      member.action()
    })
  }
  cut(){
    console.log('cut')
  }
}

const director = new Director()
const photographer = new Photographer()
const actors = new Actors()
const lightingEngineer = new LightingEngineer()
director.action([photographer, actors, lightingEngineer])
director.cut()
director.action([photographer, actors])
好了导演可以专心拍戏了,工作人员也都知道自己的职责了
如果你理解了以上的内容,你就掌握了多态封装原则和策略模式,所以你并不需要知道什么是多态封装原则和策略模式,你就已经会用了,所有的原则和设计模式都是为了解决具体的问题而产生的.
这时你就会问,那为什么要学习设计模式呢?我知道怎么用就行了,其实可以把设计模式理解为专业术语,比如在打王者荣耀时,会说4-1分推,大家都心领神会
4-1分推就是一种游戏策略,通常用于提高团队的推塔效率。这种策略基于人数优势,其中四名队员集中在一条线上进行推塔,而另一名队员则前往其他地方压力其他敌方塔或击杀对手。通过这种方式,可以更快地推倒对手的塔,为我方获得胜利创造机会。

设计模式是软件开发中的一种最佳实践方法,它们提供了在特定情境下解决问题的方案。理解设计模式的目的和方法是真正理解和有效应用设计模式的关键。

抵触心理可能来自于误解或不熟悉设计模式的概念。有些人可能认为设计模式会让代码变得复杂或增加额外的工作量。然而,实际上,设计模式是为了提高代码的可重用性、可维护性和扩展性,从而使代码更加灵活和适应变化。
生搬硬套也是一个需要避免的问题。虽然设计模式提供了可行的解决方案,但并不意味着每个问题都需要使用设计模式。正确理解设计模式的目的是了解何时以及如何使用它们,而不是简单地将其应用到每个场景中。
要真正理解设计模式,建议你不仅要学习它们的定义和基本思想,还要深入研究它们的原理和实践。这包括理解设计模式的背后的问题、优势和适用性,并尝试在实际项目中应用它们。通过实践和经验,你将能够更好地掌握设计模式,并将其应用到合适的情况中。

猜你喜欢

转载自blog.csdn.net/weixin_42657666/article/details/131824609