模版方法模式比较简单,就是一个方法封装多个小方法,将算法流程封装好了,提供一个解决方案。小方法的具体实现有不同的子类自己负责,而小方法之间的调用逻辑子类不需要管,在父类里给你弄好。
一般模板方法写成 final 的,不允许重写。
算法内可能要根据不同的情况执行不同的操作,在父类写一个抽象的或者默认实现的方法,子类去重新返回自己的情况,这就叫钩子
。
建造者模式第三方库用的太多了,一般类名上带有 Builder
的,最后要调用 build()
方法的都是这模式,自己也写过很多,都有插件一键生成 Builder 类的。这种类可以灵活设置属性。
《设计模式之禅》书中举的例子初看不一样,其实还一样,他就是设置一个集合属性,不同的实现传不同的集合过来,然后另一个类根据这一个属性值做不同的事情。个人感觉这么写没有体现出建造者的优点。
网友评论