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
gof 设计模式 java_javaSE中的GOF设计模式相关推荐
- java 生成器 设计模式_Java中的生成器设计模式
java 生成器 设计模式 Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解 ...
- java策略设计模式_Java中的策略设计模式
java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...
- scala设计模式_Scala中的工厂设计模式
scala设计模式 I'm going to deliver a series of Scala Design Patterns in my coming posts. I will pick-up ...
- php的工厂设计模式,PHP中的工厂设计模式是什么?
工厂创建对象.所以,如果你想建造 class A{ public $classb; public $classc; public function __construct($classb, $clas ...
- java观察者设计模式_Java中的观察者设计模式
java观察者设计模式 在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,即依赖于一个特定对象( ...
- java 模板方法设计模式_Java中的模板方法设计模式
java 模板方法设计模式 模板方法是一种行为设计模式 ,用于创建方法存根并将某些实现步骤推迟到子类. 模板方法定义了执行算法的步骤,它可以提供默认实现,该实现对于所有或某些子类可能是通用的. 让我们 ...
- Android中常用的设计模式
一:参考文档 先介绍参考文档(或许我们更容易明白):另记录本人可参考 QQ15 MobileSafe 两个Demo 有哪些在实际 Android 项目中用到的设计模式? Android开发中常见的设计 ...
- 如何掌握并在实践中自如运用设计模式
设计模式是面向对象编程的热门话题之一,越来越多的开发人员认识到设计模式的重要性.采用各种语言实现设计模式的文章也越来越多,但是很多开发人员发现很难将设计模式与实际开发中需要解决的具体问题相联系.因为使 ...
- java设计模式迭代器模式_Java中的迭代器设计模式–示例教程
java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...
- Java中的迭代器设计模式–示例教程
迭代器模式是一种行为模式,用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator接口提供了遍历集合的方法. 根 ...
最新文章
- 数据库Sharding的基本思想和切分策略
- c++枚举类型(二) 命名空间
- Office2013 分享
- 系统出现“NTLDR is missing press any key to restart”问题解决方案
- OpenGL合并转换
- PHP实现弹出消息提示框的两种方法
- TZOJ 5101 A Game(区间DP)
- java获取请求的url地址
- 【Flink】Flink使用withParameters(Configuration)传参
- PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest0.5
- Windows 远程桌面连接命令
- 数据结构名词解释详细总结
- 小武匠师PPT 基础篇(一)-武文杰-专题视频课程
- java中的元音 辅音_元音辅音分类表
- 自定义firefox背景色(豆绿色)
- 微信CRM系统对客户关系管理有什么好处?
- Python lambda表达式及用法
- 微信小程序之 开发者工具下载及使用
- 5月1日起正式实施!图解《关键信息基础设施安全保护要求》
- Linux下安装mldonkey及配置