`

JDK中使用到的23个经典设计模式

 
阅读更多

A. 创建模式

Singleton(单态):只允许一个实例

 

  1. Runtime.getRuntime();  
  2. java.awt.Toolkit.getDefaultToolkit();  
  3. java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();  
  4. java.awt.Desktop.getDesktop();  


Abstract factory(抽象工厂):创建一组有关联的对象实例

 

 

  1. java.util.Calendar.getInstance();  
  2. java.util.Arrays.asList();  
  3. java.util.ResourceBundle.getBundle(String baseName);  
  4. java.sql.DriverManager.getConnection(String url);  
  5. java.sql.Connection.createStatement();  
  6. java.sql.Statement.executeQuery(String sql);  
  7. java.text.NumberFormat.getInstance();  
  8. javax.xml.transform.TransformerFactory.newInstance();  

 

 

Factory(工厂方法):按照需求返回一个类型的实例

  1.  java.lang.Proxy.newProxyInstance();  
  2. java.lang.Object.toString();  
  3. java.lang.Class.newInstance();  
  4. java.lang.reflect.Array.newInstance();  
  5. java.lang.reflect.Constructor.newInstance();  
  6. java.lang.Boolean.valueOf(String s);  
  7. java.lang.Class.forName(String className);  


Builder(建造者):主要用来简化一个复杂的对象的创建

 

 

  1. java.lang.StringBuilder.append(Object obj);  
  2. java.lang.StringBuffer.append(Object obj);    
  3. java.sql.PreparedStatement    
  4. javax.swing.GroupLayout.Group.addComponent();  


Prototype(原型):使用自己的实例创建另一个实例

 

 

  1. java.lang.Object.clone();  
  2. java.lang.Cloneable;  


B.结构模式

 

Adapter(适配器):个接口或是类变成另外一种

 

  1. java.util.Arrays.asList();  
  2. javax.swing.JTable(TableModel)    
  3. java.io.InputStreamReader(InputStream)    
  4. java.io.OutputStreamWriter(OutputStream)    
  5. javax.xml.bind.annotation.adapters.XmlAdapter.marshal();  
  6. javax.xml.bind.annotation.adapters.XmlAdapter.unmarshal();  


Composite(组合):让使用者把单独的对象和组合对象混用

 

 

  1. javax.swing.JComponent.add(Component comp);  
  2. java.awt.Container.add(Component comp);   
  3. java.util.Map.putAll(Map m);  
  4. java.util.List.addAll(Collection c);  
  5. java.util.Set.addAll(Collection c);  


Decorator(装饰器):为一个对象动态的加上一系列的动作,而不需要因为这些动作的不同而产生大量的继承类

 

 

  1. java.io.BufferedInputStream(InputStream);  
  2. java.io.DataInputStream(InputStream);  
  3. java.io.BufferedOutputStream(OutputStream);  
  4. java.util.zip.ZipOutputStream(OutputStream);  
  5. java.util.Collections.checkedList(List list, Class type) ;   


Facade(门面):一个简单的接口包状一组组件,接口,抽象或是子系统。

 

 

  1. java.lang.Class    
  2. javax.faces.webapp.FacesServlet  


Flyweight(共享元):有效率地存储大量的小的对象

 

 

  1. java.lang.Integer.valueOf(int)    
  2. java.lang.Boolean.valueOf(boolean)    
  3. java.lang.Byte.valueOf(byte)  
  4. java.lang.Character.valueOf(char)  


Proxy(代理):用一个简单的对象来代替一个复杂的对象

 

 

  1. java.lang.reflect.Proxy  


C.行为模式

 

Chain of Responsibility(责任链):一个对象在一个链接传递直到被处理

  1. java.util.logging.Logger.log()   
  2. javax.servlet.Filter.doFilter()   


Command(命令):将一系列的命令封装成在一个类中

 

 

  1. java.lang.Runnable  
  2. javax.swing.Action  


Interpreter(解释器):定义语言的文法 ,并且建立一个解释器来解释该语言中的句子

 

 

  1. java.util.Pattern  
  2. java.text.Normalizer  
  3. java.text.Format    


Iterator(迭代器):对象遍历

 

 

  1. java.util.Iterator  
  2. java.util.Enumeration  


Mediator(中介):用一个中介对象来封装一系列关于对象交互行为.

 

 

  1. java.util.Timer  
  2. java.util.concurrent.Executor.execute()  
  3. java.util.concurrent.ExecutorService#submit()  
  4. java.lang.reflect.Method.invoke()  


Memento(快照):保存另外一个对象内部状态拷贝的对象

 

 

  1. java.util.Date  
  2. java.io.Serializable  


Observer(观察者):事件监听器

 

 

  1. java.util.EventListener  
  2. javax.servlet.http.HttpSessionBindingListener  
  3. javax.servlet.http.HttpSessionAttributeListener  
  4. javax.faces.event.PhaseListener   


State(状态):不同的状态,不同的行为;或者说,每个状态有着相应的行为.

 

 

  1. java.util.Iterator  
  2. javax.faces.lifecycle.LifeCycle.execute()  


Strategy(策略):定义一系列的算法,把这些算法一个个封装成单独的类

 

 

  1. java.util.Comparator.compare()  
  2. javax.servlet.http.HttpServlet   
  3. javax.servlet.Filter.doFilter()  


Template(模板):定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中

 

 

  1. java.util.Collections.sort()  
  2. java.io.InputStream.skip()   
  3. java.io.InputStream.read()  
  4. java.util.AbstractList.indexOf()   


Visitor(访问者):作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.

 

 

  1. javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor  
  2. javax.lang.model.type.TypeMirror 和javax.lang.model.type.TypeVisitor    

 

分享到:
评论

相关推荐

    JDK中的23个设计模式简介

    JDK 中的 23 个设计模式简介 在 Java 开发领域,设计模式是一个非常重要的概念,它能够帮助开发者写出更加灵活...本文只是对 JDK 中 23 个经典设计模式的简单介绍,希望能够帮助开发者更好地理解和使用这些设计模式。

    JDK中有关23个经典设计模式的示例

    以上是JDK中23个经典设计模式的基本介绍和应用示例,每个模式都有其特定的用途和场景,熟练掌握这些模式有助于编写出更高效、可维护的代码。在实际开发中,灵活运用这些设计模式,能够使软件架构更加优雅,代码更具...

    JAVA设计模式在JDK中的应用

    本文将详细介绍在JDK中体现的23种经典设计模式,并通过具体的代码示例进行说明。 #### 二、设计模式分类 设计模式可以大致分为三类:创建型模式、结构型模式和行为型模式。接下来我们将分别探讨这三类模式在JDK中的...

    JDK中的设计模式

    ### JDK中的设计模式 设计模式是在软件开发过程中总结出来的最佳实践,它们可以帮助开发者解决常见的问题并提高代码的可维护性和可扩展性。Java Development Kit (JDK) 中包含了许多设计模式的应用实例,这些实例...

    jdk中设计模式

    【设计模式概述】 设计模式是软件工程中经过实践...学习JDK中的设计模式可以让我们更好地理解Java库的设计思想,提升编程技巧,同时也能帮助我们更有效地运用这些模式到自己的项目中,编写出高质量、易于维护的代码。

    设计模式在JDK的中的应用,PPT资源

    设计模式在JDK中的应用课设--PPT资源 题目要求: 设计模式在JDK中的应用(结合JDK源码,分析JDK对设计模式的支持与应用)。课设内容包括: (a)用UML类图分析JDK所支持或应用的设计模式的结构,并与GOF的结构加以...

    设计模式实战、jdk源码|simple-demo.zip

    通过阅读JDK源码,我们可以了解到如何在实际项目中有效运用设计模式,从而提高代码的可读性、可扩展性和可维护性。同时,这也有助于我们掌握Java核心库的内部工作机制,提升我们的编程技能。 此外,"simple-demo"这...

    设计模式在JDK中的应用 (背景、UML结构、角色、职责)

    设计模式在JDK中的应用课设完整报告,Word文档 题目要求: 设计模式在JDK中的应用(结合JDK源码,分析JDK对设计模式的支持与应用)。课设内容包括: (a)用UML类图分析JDK所支持或应用的设计模式的结构,并与GOF的...

    jdk17中文说明文档

    "方便已义中文方式浏览jdk中的说明"强调了这个文档是中文翻译版,使得开发者能够更轻松地理解JDK中的各种类、接口、方法和概念,降低了学习和使用的难度。 **标签解析:** "范文/模板/素材" 这个标签可能是指这个...

    jdk工具介绍JVM垃圾回收23种设计模式

    本主题将深入探讨JDK中的重要工具、JVM(Java Virtual Machine)的垃圾回收机制以及23种经典的设计模式。 首先,JDK工具介绍: 1. `javac`:这是Java的编译器,用于将源代码编译成可执行的字节码。 2. `java`:这个...

    java设计模式(chm)和jdk中文api文档(chm)

    介绍java二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例子和类图,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点,希望对大家有所帮助。...

    JDK1.8 中文API手册

    5. **Optional类**:Optional类是用来防止空指针异常的一种设计模式。它代表一个值存在或不存在,强制程序员显式处理缺失值的情况,提高了代码的健壮性。 6. **Date与Time API的改进**:JDK1.8对日期和时间API进行...

    jdk1.8中文文档

    JDK 1.8引入了Lambda表达式,这是一种简洁的编写匿名函数的方式,它可以作为方法参数,或者在没有名字的方法中使用。Lambda表达式使代码更加简洁,减少了回调地狱的问题,提高了代码的可读性。 2. **函数式接口** ...

    java jdk经典实例

    Java JDK经典实例是Java初学者不可或缺的学习资源,它包含了169个精心挑选的案例,覆盖了JDK中的大部分功能和细节。通过这些实例,学习者可以深入理解Java语言的核心特性,提升编程技能。以下是对这些知识点的详细...

    jdk8帮助文档(jdk8_API)

    JDK 8的Optional类也是一个重要的设计模式,它帮助解决null引用的问题,鼓励更清晰的代码结构。Optional对象表示可能为null的值,通过`isPresent()`、`get()`、`orElse()`等方法,可以避免空指针异常,使代码更具...

    JDK中文帮助文档.rar

    对于开发者来说,不断学习和探索新的技术资源是提升技能的关键,这个链接可能会引导你找到更多的Java或编程相关的学习资料,比如框架教程、设计模式书籍等。 3. `E书说明.txt`:这是一个文本文件,通常用于提供关于...

    《Java设计模式》课后习题参考答案-刘伟(20180723).pdf

    JDK中许多类和方法都使用了设计模式,这些模式的应用帮助实现了代码的高内聚、低耦合,提高了代码的可维护性和扩展性。下面介绍几种常见的设计模式及其在JDK中的应用实例: a) 抽象工厂模式(AbstractFactory) ...

    jdk8安装包rpm,jdk8安装包rpm

    在这个场景中,我们关注的是JDK 8的RPM安装包,这是一种专为使用Red Hat Package Manager (RPM)的Linux发行版设计的软件包格式。 **一、JDK的组成部分** 1. **Java编译器** (javac):将源代码编译成可执行的字节码...

Global site tag (gtag.js) - Google Analytics