zoukankan      html  css  js  c++  java
  • 详列JDK中的设计模式(一)创建型

    1.单例模式(Singleton):只存在一个实例而对外提供公开的访问点

      (1)NumnerFormat只有一个实例

      (2)Runtime(JVM运行于系统之上,由Runtime可以获取系统的信息):而Runtime是单例的,饿汉式

    0.静态工厂(Factory):根据传入方法的参数来构造实例,对外隐藏创建实例的细节

      (静态工厂不属于23种设计模式,但此处列举以便理解)

      (1)Integer.valueOf() Integer类中根据普通类型的值来创建包装类Integer

      (2)Class.forName() 反射中根据全限定类名来创建实例

    2.工厂方法模式(Factory Method):抽象工厂,抽象产品实现松耦合,实现类决定产出什么产品

      Collection.iterator 集合Collection实现了Iteatorable接口,其内部有一个内部迭代器类,可通过iterator()方法获取到迭代器(这一方法正是那个工厂方法)

      集合Collection代表工厂,迭代器Iterator代表产品

      Collection代表抽象工厂接口,生产产品的方法为Iterator(),返回抽象的产品接口 ,而具体的集合类实现此接口(具体的List,具体的Set等实体类),生产的Iterator是产品接口的实现类具体Iterator生产什么具体的产品由实现什么具体工厂

     3.抽象工厂模式(Abstract Factory):抽象工厂接口生产的产品有多种

    (1)java.sql包中Connection创建Statement

     JDBC的使用中,加载驱动后使用DriverManager.gerConnection获取的是Connection的实例,Connection是连接接口,而后由Connection创建用以执行不同sql语句的Statement,预编译PreparedStatement和用以执行存储过程的CallableStatement.这时Connection相当于抽象工厂接口,可生产多种抽象产品。

      Connection就成为了抽象工厂,而Statement,PreparedStatement,CallableStatemen是多种抽象产品,抽象工厂可生产多种抽象产品,而对应的实例工厂MysqlCollectionImpl生产实力产品Impl

     4.建造者模式(Builder):构造一个实例需要大量的工作,所以将构建逻辑提到了单独的类中

      (1)解析XML时构建总的document需要遍历所有节点,包括注释文本等  ,建造过程繁琐,就就将它分离出来

    5.原型模式(Prototype):克隆,深拷贝,浅拷贝

      (1)Object.clone / Cloneable

      

    参考:https://blog.csdn.net/qq_38311489/article/details/89439835

  • 相关阅读:
    js数组根据对象中的元素(相同的属性值)去重
    nginx设置add_header 跨域依旧失败解决
    canvas前端压缩图片和视频首屏缩略图并上传到服务器
    纯前端下载文件的方法
    vue多文件上传进度条 进度不更新问题
    jquery中attr和prop的区别
    为什么我认为数据结构与算法对前端开发很重要?
    CSS2.0实现面包屑
    Vue是如何渲染页面的,渲染过程以及原理代码
    js 事件驱动原理
  • 原文地址:https://www.cnblogs.com/ying-dong/p/12150658.html
Copyright © 2011-2022 走看看