设计模式-创建者模式

创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

类型

工厂模式(Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
在这里插入图片描述

实例化

实例化是用类创建对象的过程,有以下4种方式实现:
		1.new
		2.反射
		3.clone
		4.反序列化

工厂三姐妹

简单工厂(不是设计模式)

	减少if...else... 形成map

工厂方法

	一个独立自治的子类自己实例化对象类型
	目的
		子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行
	实现核心
		1.接口类提供一个创建对象的方法
		2.子类实现接口,重写方法
		3.工厂类,通过ifelse类型,创建不同对象,调用者通过使用工程类,传入不同类型,创建出不同类型对象

抽象方法

	创建超级工厂按照工厂模式创建对象
	实现核心
		invoke
			代理工厂 反射过来具体工厂

单例

创建一个全局访问唯一的对象,避免重复全局使用的类频繁创建和销毁对象
目的
	保证类的对象在内存中唯一,频繁创建对象,会造成堆空间不足,引发GC
优点
	内存中唯一一个实例,减少内存开销、降低创建和销毁对象的频率,共享资源
缺点
	无接口 继承,难于扩展
	使用不当会出现内存泄露
		使用static修饰单例对象,长生命周期的对象持有短生命周期对象的引用,短周期对象无法GC,单例对象初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部的引用,就造成外部引用无法GC,造成内存泄露
实现核心
	没有接口,没有依赖组合关系
	不能继承
	单例模式原则
		1.私有构造。(阻止类被通过常规方法实例化)
		2.以静态方法或者枚举返回实例。(保证实例的唯一性)
		3.确保实例只有一个,尤其是多线程环境。(保证在创建实例时的线程安全)
		4.确保反序列化时不会重新构建对象。(在有序列化反序列化的场景下防止单例被莫名破坏,造成未考虑到的后果)

建造者

创建一个复杂,千人千面的对象,通过相同构建步骤、调整构建顺序、部件数量等手段建造出一个多样化的产品(对象)
目的
	实现了对象的属性与构建的分离,隐藏构建的细节
实现核心
	依赖倒转
	抽象类+接口
		1.复杂对象接口,对外暴露可控产品组装方案
		2.抽象类Builder实现复杂对象的接口,提供统一必须实现的组装方法模板
		3.不同具体建造者继承抽象类,扩展各自重写组装方案
		4.实现:通过调整步骤、增减组装方法,组装不同表现的产品

原型

创建重复的对象
目的
	减少new的次数,通过拷贝实现创建对象,效率比new高
实现核心
	自我复制,克隆 拷贝
	1.原型类为抽象类且实现Cloneable接口,重写clone方法clone方法、可以增加扩展抽象方法
	重写clone方法:
		浅克隆:super.clone 
		深克隆:super.clone+原型类中的对象也克隆一份
	2.具体子类继承抽象类,并重写扩展类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值