标签:集合类 空间 代码 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