首页 > 其他 > 详细

设计模式学习(一)

时间:2019-07-03 19:04:46      阅读:89      评论:0      收藏:0      [点我收藏+]

 

迭代器模式、适配器模式、template method模式、factory method模式、单例模式

迭代器模式

涉及到到对象有集合,迭代对象、迭代器。为什么要使用迭代器模式呢,主要还是因为可复用,使用了迭代器模式之后不管集合如何变化只要,迭代器不变代码就不用修改,具体如下

集合类接口

技术分享图片

 

迭代器接口

技术分享图片

集合类

技术分享图片

具体的迭代器实现

技术分享图片

 

BookShelfIterator为具体的迭代器,在实现迭代器要注意next方法和hasNext方法的实现,next方法是“返回对象,并指向下一个对象”,hasNext方法是“判断是否有下一个对象”。

迭代器的使用如下

技术分享图片

java中的迭代器模式,在集合框架中可以找到像Iterable和Iterator接口分别对应集合接口和迭代器接口

适配器模式

适配器模式涉及的对象有目标接口(不是指java中的接口interface,而是指程序互相交流的接口不一定是interface)、适配器和被适配的对象,使用适配器主要也是复用,可以将和目标接口功能相似的类使用适配器去实现目标接口。这样就可以避免重复的代码。

适配器有两种方式来实现一是继承二是委托,具体如下

目标接口

技术分享图片

适配器(继承)

技术分享图片

Banner的两个方法的功能刚好是Print接口所需要的功能,所以只要继承这个类并实现目标接口在方法中调用Banner的方法即可。

适配器(委托)

技术分享图片

当目标接口为一个抽象类时由于不能多继承所以就实例化一个对象,在调用目标接口的方法时,使用委托对象来调用对应的方法

template method 模式

这个模式涉及的对象有抽象类(定义了具体的流程)和具体的实现类

抽象类

技术分享图片

具体实现类

技术分享图片

实现类重写了父类的抽象方法,但并没有重写display方法(相当于模板,所以的子类都是一样的流程,不需要更改,也减少了子类的重复实现该方法),因为子类不需要实现,在父类中已经被定义好,继承抽象类的子类只需要实现抽象方法即可

factory methd模式

这个设计模式和template method模式类似。当template method 模式中的模板方法用来生成实例时就成了factory method模式

单例模式

技术分享图片

将类的构造方法定义为私有,就无法在外部创建对象,只能调用getInstance方法来和获取已经实例化 好的静态成员,而该成员只会实例化一次。

单例模式就我现在的理解主要是为了避免空间的浪费。多个实例之间会相互影响所以就实例化一次

设计模式学习(一)

原文:https://www.cnblogs.com/zshjava/p/11127881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!