创建型模式--------------------------创建对象
综述:
创建型设计模式将对象的创建过程和对象的使用过程分离,降低系统耦合度
1简单工厂模式:
根据传入参数返回所需的对象
抽象事物类+具体事物类1+具体事物类2+工厂类
该模式的实际应用:jdk类库中javax.cryto.KeyGenerator和java.security.KeyPairGenerator中的getInstance方法,
通过传入参数,才能获得实例
2工厂方法模式:
是对简单工厂的弥补,符合开闭原则,将对象的创建过程封装在抽象工厂类的子类,
抽象事物类+具体事物类1+具体事物类2+抽象工厂类+具体工厂类1+具体工厂类2
该模式的实际应用:jdk类库中jdbc中使用了工厂方法模式,将数据库连接对象,语句对象,结果集对象获取时都是通过工厂方法模式获取的,即将具体的实例的创建放在具体工厂类中生产
3抽象工厂模式:
比工厂方法的抽象程度更高,抽象工厂的子类可以生产一组具体的对象
抽象事物类A+具体事物类A1+具体事物类A2
抽象事物类B+具体事物类B1+具体事物类B2+抽象工厂类+具体工厂类A+具体工厂类B
4建造者模式:
关注如何创建一个复杂的对象,不同的具体建造者定义了不同的创建过程
抽象建造者类+具体建造者类1+具体建造者类2+复杂产品类+指挥者类(与客户端沟通,由客户端决定具体的建造者)
5原型模式:
适合创建大量相同对象时使用,只需创建一个原型对象,通过在类中定义的克隆方法复制自己
浅克隆实现方式:
抽象原型类Object(clone())+具体原型类 implements Cloneable(实现具体的clone()方法)
深克隆实现方式:
抽象原型类Object(clone())+具体原型类 implements Serializable (实现具体的deepClone())
该模式的实际应用:
复制crtl+c其实就是一种深克隆,,复制得到对象和原型对象是两个类型相同但内存地址不同的对象,
6单例模式:
确保一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例
private new getInstance
该模式的实际应用:在jdk中,每一个java应用程序中,都有唯一的一个Runntime对象,(java.lang.Runntime类:运行环境类)
懒汉单例模式和饿汉单例模式的区别:一个是在 ,,另一个是在类加载的时候创建的单例对象