设计模式-模板模式

打印 上一主题 下一主题

主题 1032|帖子 1032|积分 3096

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
背景

制作豆浆,流程:选材——》添加配料——》浸泡——》放到豆浆机
可以添加差异的配料
选材,浸泡,放到豆浆机对于所有豆浆都一样,可以利用模板模式简化
基本先容

在一个抽象类中公开定义了执行它的模板,它的子类可以按需重写方法发实现,但调用将通过抽象类中定义的方法执行。
属于行为型模式。
模板类(抽象类)

定义了一个模板方法(抽象方法),和详细的执行方法(可抽象也可详细)。
举例:
模板方法:做豆浆
详细执行方法:选材,添加配料,浸泡,放到豆浆机
详细的制作类,继承自这个模板抽象类,
在使用时,通过使用详细的子类,完成使用。
详细实现

创建豆浆模板类(SoyaMilk),声明模板类方法make();
声明详细执行方法:select(),add(),soak(),beat()方法。
因为配料差异,所以add()方法可以时抽象方法,在子类中实现,其他方法可以直接在父类中定义。
在make()方法中调用这些详细的执行方法。
创建差异的子类BlackBean,RedBean继承自SoyaMilk,重写add()方法。
使用时,在客户端直接创建一个子类实例,调用make()方法即可完成
钩子方法

可以在模板类中定义一个方法,默认不做任何事。
举例:制作一杯不加任何调料的纯豆浆。
在SoyaMilk类中声明一个返回值为布尔值(true||bool)的钩子方法,给钩子方法一个默认返回值。
通过在子类中重写钩子方法,实现不添加调料的结果。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表