gof 设计模式 java_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中的关闭流的时候,只需要关闭高级流,低级流就会自动被调用,这里的源代码体现出了装饰器模式。装饰模式就是在原来的类上进行修饰,将功能进行扩展。

欢迎交流 张先生 zg_199101@163.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值