原型模式、模板模式

原型模式:一般都是通过new创建一个对象,如果对象的初始化数据包含耗时间、耗资源的操作。为了避开构造时的复杂操作可以使用原型模式保存数据信息,通过克隆快速创建新的对象实例。
适用情况:
    1:对象类型不是刚开始就能确定,而是这个类型是在运行期确定的话,那么通过这个类型的对象克隆出一个新的类型更容易。
    2:当一个系统应该独立于它的产品创建、构成和表示时,要使用 Prototype模式。(暂时未理解)
    3:处理一些对象比较简单,并且对象之间的区别很小
    4:为了避免创建一个与产品类层次平行的工厂类
模式组成:
    客户(Client)类:适用原型对象的客户程序,包含一个(原型)Prototype的引用
    抽象原型(Prototype):规定了具体原型要实现的接口,可以有多个接口,但必须有快速创建对象实例的接口。
    具体原型(ConcretePrototype):继承抽象原型,实现接口。
ps: 在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创建一个对象,然后由工厂方法提供给调用者。
 
模板模式:定义了一个操作中关键的算法骨架,将一些步骤延迟到子类中。算法子类不能改变算法的结构,可重定义该算法某些特定步骤。
适用情况:
    1:算法的关键步骤不变,可能包含多种情况,留到子类中实现。
    2:子类中公共的行为去提取出来集中到一个公共的父类,避免代码重复。
   
模式组成:
    抽象类(AbstractClass):可定义相关的接口和一定的逻辑操作,具体的子类将重定义实现。
    具体子类(ConcreteClass):继承抽象类实现具体的接口、可重写相关步骤。

优点:复合好莱坞法则:别找我们,我们找你。父类实现逻辑和定义接口,子类负责实现细节部分步骤。
    具体方法:由抽象类声明并实现,而子类并不实现或覆盖。其实就是一般的方法,但是不需要子类来实现。
    抽象方法:由抽象类声明,由具体子类实现。在java语言里一个抽象方法以abstract关键字标示出来。
    钩子方法:由抽象类声明并实现,而子类也会加以扩展。通常抽象类给出的是一个空的钩子方法,也就是没有实现的方法。(一般是给子类一些可选的操作,子类不一定要重写)
    异同:抽象方法和钩子方法类似,开发中只有概念上差别,让程序员在描述过程中可以更清晰的描述业务。
 
 
本文纯属个人学习总结, 篇幅的大部分内容都来源于网络, 每个人的水平、层次、出发点不同,阅读者可能存在一定的误解,希望提出建议共同交流
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值