1.单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
Singleton:负责创建Singleton类自己的唯一实例,并提供一个getInstance的方法,让外部来访问这个类的唯一实例。
饿汉式:
private static Singleton uniqueInstance = new Singleton();
懒汉式
private static Singleton uniqueInstance = null;
功能 单例模式是用来保证这个类在运行期间只会被创建一个类实例,另外,单例模式还提供了一个全局唯一访问这个类实例的访问点,就是getInstance方法。
范围 Java里面实现的单例是一个虚拟机的范围。因为装载类的功能是虚拟机的,所以一个虚拟机在通过自己的ClassLoader装载饿汉式实现单例类的时候就会创建一个类的实例。
懒汉式单例有延迟加载和缓存的思想
优缺点
懒汉式是典型的时间换空间
饿汉式是典型的空间换时间
2.简单工厂
接口是一种特殊的抽象类,跟一般的抽象类相比,接口里的所有方法都是抽象方法,接口里的所有属性都是常量。也就是说接口里面只有方法定义没有任何方法实现。
接口的思想是"封装隔离"
优点 帮助封装 解耦
缺点 可能增加客户端的复杂度 不方便扩展子工厂
3.适配器模式
将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
(比如:以充电头为例 中国220v 国外不是 需要转接口)
功能:
进行转换匹配,目的是复用已有的功能,而不是来实现新的接口。在适配器里实现功能,这种适配器称为智能适配器。
优点:
更好的复用性 更好的扩展性
缺点:
过多的使用适配器,会让系统非常零乱,不容易整体进行把握。
何时选用适配器模式:
如果你想要使用一个已经存在的类,但是它的接口不符合你的需求,这种情况可以使用适配器模式,来把已有的实现转换成你需要的接口。
如果你想创建一个可以复用的类,这个类可能和一些不兼容的类一起工作,这种情况可以使用适配器模式,到时候需要什么就适配什么。
如果你想使用一些已经存在的子类,但是不可能对每一个子类都进行适配,这种情况可以选用对象适配器,直接适配这些子类的父类就可以了。
4.策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
注:针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。
模式的使用场景
针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。
需要安全的封装多种同一类型的操作时。
出现同一抽象多个子类,而又需要使用if-else 或者 switch-case来选择时。
Android源码中的模式实现
策略模式主要用来分离算法,根据相同的行为抽象来做不同的具体策略实现。
优点:
结构清晰明了、使用简单直观。 耦合度相对而言较低,扩展方便。 操作封装也更为彻底,数据更为安全。
缺点:
随着策略的增加,子类也会变得繁多。
网友评论