设计模式总结
1、什么是设计模式
设计模式是解决某一类问题的一种通用的抽象的解决方案,理解一种设计模板需要弄清楚如下几个问题:
解决什么问题
适用场景和约束
优点
缺点
2、设计模式的分类
2.1、创建模式
对类的实例化过程的抽象,将对象的创建和使用分离,使用者不用关注对象创建的细节,达到软件设计的单一职责原则。
2.2、结构模式
将类或对象结合形成功能更强大的结构。
结构模式又分为类结构型模式和对象结构型模式:
类结构模式使用继承和实现关系。
对象结构模式通常使用的是关联关系,通过在一个类定义另一个类的实例对象,然后通过调用该对象的方法来实现增强类的行为。在设计中要优化考虑使用对象结构模式。
2.3、行为模式
行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅关注类和对象的结构,更关注对象之间的协作。
行为模式又分类行为模式和对象行为模式:
类行为模式:使用继承的方式来分配行为,通过多态的特性来实现父类和子类之间的职责的划分。
对象行为模式:使用对象的聚合关联关系来分配行为。
3、设计模式详解
3.1、简单工厂模式
定义
简单工厂模式属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的接口或父类。解决使用者对具体实现的依赖,使用者只用依赖工厂类,具体的实现类的实例化由工厂完成。
适用场景和约束
工厂需要创建的对象的类型较少。
客户端需要知道具体类型与参数的对应关系。
优点
客户端程序不需要依赖具体的实现类和实例化逻辑,实现了职责分离,如果引入配置文件,在不更改类的情况下,可以改变实现。
缺点
如果增加实现需要修改工厂类。
3.2、单例模式
定义
单例模式是一种对象创建型模式。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
优点
对类的实例化过程进行了严格的控制,实现了实例的共享,解决了类实例化带来的资源消耗。
3.3、适配器模式
定义
适配器模式将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以是类结构型模式,也可以是对象结构型模式。
适用场景和约束
需要使用现有的类,而这些类的接口不符合系统的需要。
优点
将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。
对于客户端类透明,而且提高了适配者的复用性。
灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,符合“开闭原则”。
3.4、策略模式
定义
策略模式是一种对象行为型模式。策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。
适用场景
系统需要动态地在几种算法中选择一种。
优点
策略模式提供了对“开闭原则”的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为。
使用策略模式可以避免使用多重条件转移语句。
评论