设计模式概述
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
分类
设计模式分为三大类,23种,他们分别是:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
下面,我将重点梳理一下我们常见的一些设计模式。
常见设计模式
工厂方法模式
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。如在更换数据库的时候,可以通过不同的工厂类实现不同的数据库的调用,只要在最后调用工厂实现时修改即可。
抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。它是由一个超级工厂创建管理多个小的工厂,再由小的工厂管理具体实现。
装饰者模式
装饰者模式允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰类继承实现类的父类接口并进行功能添加。
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式
单例模式特点:单例类只能有一个实例;单例类必须自己创建自己的唯一实例;单例类必须给所有其他对象提供这一实例。由于单例模式在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例;避免对资源的多重占用(比如写文件操作)。
常见的单例模式实现有懒汉式和饿汉式。
饿汉式在创建Singleton类的时候就完成了实例的创建,懒汉式只有在获取实例的时候才回去创建。