详列JDK中的设计模式创建型

Posted autism-dong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详列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

技术图片  

以上是关于详列JDK中的设计模式创建型的主要内容,如果未能解决你的问题,请参考以下文章

创建型设计模式——单例模式

设计模式 行为型模式 -- 策略模式 JDK源码分析:Comparator

创建型设计模式-原型模式

创建型设计模式-原型模式

对象心思过于多变,工厂模式满足不了?用建造者模式啊!

设计模式 行为型模式 -- 迭代器模式 JDK源码解析:ArrayList