看了设计模式的书,觉得享元模式是提取各子类中的相同内容形成基类,模版模式基本也是把主要功能做成基类,让各子类继承,请问有什么区别嘛
1 回答

FFIVE
TA贡献1797条经验 获得超6个赞
个人理解:
觉得享元模式是提取各子类中的相同内容形成基类
我觉得这个说法不准确。
在我看来享元模式
的关键在共享,而不是复用。
如果一个对象的N歌子类都有一样的,且不会变化的属性或者方法:
举个不知道是否恰当的例子,一副围棋中每个棋子半径和和制作材料是固定的不会变化的,但是颜色是变化的,
因此我可以将 半径和材料这些东西抽出来,抽出来的意思是,放在另一个类中,这个类不会被子类继承。子类无非就有自己的特定的属性和方法(比如位置和颜色)。我需要半径的时候,不需要从另一个类中取就可以,这个类中的内容可能只被实例化一次。
而模板偏重的是构建一个算法的流程或者结构,子类可以去实现其中自己的部分(或者必须实现自己的部分,否则报错),而不需要变动的部分就不需要去管。
享元侧重的是共享一些变量,这样就不会是的实例对象很多的时候,内存崩掉。
而模板侧重的更多是一个结构,哪些是子类可以去实现或者必须重写,那些是不需要的,每个实例化的子类都拥有其中的所有的属性。(如果属性是值,就会进行拷贝)
PS:我不确定这种理解是否有误,我个人是这么理解的。
添加回答
举报
0/150
提交
取消