为了账号安全,请及时绑定邮箱和手机立即绑定

请问JS设计模式中享元模式和模版模式区别是什么

请问JS设计模式中享元模式和模版模式区别是什么

慕沐林林 2018-12-28 23:15:02
看了设计模式的书,觉得享元模式是提取各子类中的相同内容形成基类,模版模式基本也是把主要功能做成基类,让各子类继承,请问有什么区别嘛
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

个人理解:

觉得享元模式是提取各子类中的相同内容形成基类 我觉得这个说法不准确。

在我看来享元模式的关键在共享,而不是复用。

如果一个对象的N歌子类都有一样的,且不会变化的属性或者方法:

举个不知道是否恰当的例子,一副围棋中每个棋子半径和和制作材料是固定的不会变化的,但是颜色是变化的,

因此我可以将 半径和材料这些东西抽出来,抽出来的意思是,放在另一个类中,这个类不会被子类继承。子类无非就有自己的特定的属性和方法(比如位置和颜色)。我需要半径的时候,不需要从另一个类中取就可以,这个类中的内容可能只被实例化一次。

而模板偏重的是构建一个算法的流程或者结构,子类可以去实现其中自己的部分(或者必须实现自己的部分,否则报错),而不需要变动的部分就不需要去管。

享元侧重的是共享一些变量,这样就不会是的实例对象很多的时候,内存崩掉。
而模板侧重的更多是一个结构,哪些是子类可以去实现或者必须重写,那些是不需要的,每个实例化的子类都拥有其中的所有的属性。(如果属性是值,就会进行拷贝)

PS:我不确定这种理解是否有误,我个人是这么理解的。


查看完整回答
反对 回复 2019-01-23
  • 1 回答
  • 0 关注
  • 652 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号