javaSE中的GOF设计模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaSE中的GOF设计模式相关的知识,希望对你有一定的参考价值。
javaSE中的GOF设计模式
这里就javaSE中常用的设计模式进行一个总结。
什么是设计模式?
能够被重复利用的解决方案就是设计模式。
常用的设计模式有哪些?
常用的设计模式有GOF设计模式和javaEE设计模式。
GOF设计模式有哪些类型?
- 对象创建型 是在对象创建过程中的设计模式。例如:单例模式
- 结构型 是用更多的类,更多的方法、对象组建一个更大的结构。例如:适配器模式、装饰器模式
- 行为型 涉及到行为、算法的设计模式。例如:策略模式
javaSE中的GOF设计模式
- 集合中 迭代子模式、策略模式
迭代子模式:在集合中,所有collection接口以及他的子接口都实现了iterable接口,意味着这些类都可以进行迭代。迭代子模式是说不需要知道底层的具体的存储结构和存储细节,统一面向Iterator接口进行迭代。例如:HashSet底层是哈希散列表的数据结构,TreeSet底层是二叉树的数据结构,ArrayList底层是数组,LinkedList底层是链表,但是他们都可以进行迭代,就是说不需要知道底层的存储细节,统一面向Iterator接口进行迭代。
策略模式:比较器互换体现了策略模式。在TreeSet中有两种方案实现排序。方案一是,在实体类中实现Comparable接口,重写compareTo方法,这种方法是一种侵入式的方法,并且每次修改比较规则时都需要对源代码进行修改,所以不推荐这种方法;方案二是,另外创建一个比较器类,实现Comparator接口,重写compare方法,采用这种方法可以创建多个比较器,需要使用哪个比较规则就传入哪个比较器到TreeSet中,这种比较器互换的思想正是体现了策略模式。
- io中 适配器模式、装饰器模式
适配器模式:在io中有很多地方体现了适配器模式。它的原理是:适配器模式是有一个超级接口,超级接口上有很多个抽象方法,有一个实现类只需要使用某个方法,如果直接实现超级接口的话,就需要将所有的方法全部实现,这种代码是非常丑陋的;这时候超级接口和实现类之间加一个适配器的抽象类,由适配器的抽象类去实现超级接口,将所有的方法实现了,只将实现类需要使用的方法设为abstract的,由实现类去继承适配器抽象类,这时候就只需要将适配器的抽象类实现了就可以了,这种代码是非常优雅的。除此之外,在servlet中也使用到了适配器设计模式,servlet的超级接口中有五个方法service、init、desotry、getServletInfo、getServletConfig,如果直接继承servlet接口就需要将这五个方法全部实现,而我们一般只使用service方法,所以在这里由GenericServlet实现servlet接口,将service以外的方法实现只留下service的抽象方法由我们去重写,这就体现了适配器模式的思想。
装饰器模式:io中的关闭流的时候,只需要关闭高级流,低级流就会自动被调用,这里的源代码体现出了装饰器模式。装饰模式就是在原来的类上进行修饰,将功能进行扩展。
欢迎交流 张先生 [email protected]
以上是关于javaSE中的GOF设计模式的主要内容,如果未能解决你的问题,请参考以下文章