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

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

  (1)NumnerFormat只有一个实例

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

详列JDK中的设计模式(一)创建型_第1张图片

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生产什么具体的产品由实现什么具体工厂

详列JDK中的设计模式(一)创建型_第2张图片

 

 

 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

详列JDK中的设计模式(一)创建型_第3张图片

 

 

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

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

详列JDK中的设计模式(一)创建型_第4张图片

 

 

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

  (1)Object.clone / Cloneable

详列JDK中的设计模式(一)创建型_第5张图片  

你可能感兴趣的:(详列JDK中的设计模式(一)创建型)