码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式学习(一)

时间:2019-07-03 18:30:49      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:集合类   空间   代码   img   模板   好的   单例   actor   如何   

 

迭代器模式、适配器模式、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方法来和获取已经实例化 好的静态成员,而该成员只会实例化一次。

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

设计模式学习(一)

标签:集合类   空间   代码   img   模板   好的   单例   actor   如何   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!