一 单例介绍
单例的概念
单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。
单例的好处
对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。
由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间。
饿汉:无法对instance实例进行延迟加载
懒汉:多线程并发情况下无法保证实例的唯一性
懒汉线程安全:使用synchronized导致性能缺陷
DCL:JVM即时编译器的指令重排序
静态内部类/枚举:延迟加载/线程安全/性能优势
二 Builder模式
概念
建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离
使用场景
Glide Okhttp AlertDialog
当构建一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候
Builder模式的优点
松散耦合:生产器模式可以用同一个构建算法构建出表现不同的产品,实现产品构建和产品表现上的分离
可以很容易的改变产品的内部表示
更好的复用性:生产器模式很好的实现构建算法和具体产品实现的分离
Builder模式的缺点
会产生多余的 Builder 对象以及 Director 对象消耗内存
对象的构建过程暴露
总结
Builder:它为创建一个产品 Product 对象的各个部件指定抽象接口
ConcreteBuilder:它实现了 Builder 接口,实现各个部件的具体构造和装配方法
Product:它是被构建的负责对象,包含多个组成部件
Director:指挥者又称导演类,它负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系
三 适配器模式
适配器模式定义
将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以在一起工作,其别名为包装器(Wrapper)
类适配器
类适配器定义
类的适配器模式把适配的类的API转换为目标类的API
总结
类适配器使用对象集成的方式,是静态的定义方式
对于类适配器,适配器可以重定义Adaptee的部分行为
对于类适配器,仅仅引入了一个对象,并不需要额外的引用来间接得到Adaptee
对于类适配器,由于适配器直接集成了Adaptee,使得适配器不能和Adaptee的子类一起工作
对象适配器
对象适配器定义
与类的适配器模式一样,对象的适配器模式把被适配的类的API转换为目标类的API,与类的适配器模式不同的是,对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用委派关系连接到Adaptee类
总结
对象适配器使用对象组合的方式,是动态组合的方式
对于对象适配器而言,一个适配器可以把多种不同的源适配到同一个目标
对于对象适配器,要重定义Adaptee的行为比较困难
对于对象适配器,需要额外的引用来间接得到Adaptee
Adapter模式在Android中的实际应用
Listview
三 观察者模式
发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
如何解决:使用面向对象技术,可以将这种依赖关系弱化。
四 工厂模式
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决:主要解决接口选择的问题。
何时使用:我们明确地计划不同条件下创建不同实例时。
关键代码:创建过程在其子类执行。
参考于 https://blog.csdn.net/liminwu_6/article/details/72999963
网友评论