设计模式总结

用户头像
天天向上
关注
发布于: 2020 年 10 月 04 日

1、什么是设计模式

设计模式是解决某一类问题的一种通用的抽象的解决方案,理解一种设计模板需要弄清楚如下几个问题:

  • 解决什么问题

  • 适用场景和约束

  • 优点

  • 缺点

2、设计模式的分类

2.1、创建模式

对类的实例化过程的抽象,将对象的创建和使用分离,使用者不用关注对象创建的细节,达到软件设计的单一职责原则。

2.2、结构模式

将类或对象结合形成功能更强大的结构。



结构模式又分为类结构型模式和对象结构型模式:

  • 类结构模式使用继承和实现关系。

  • 对象结构模式通常使用的是关联关系,通过在一个类定义另一个类的实例对象,然后通过调用该对象的方法来实现增强类的行为。在设计中要优化考虑使用对象结构模式。

2.3、行为模式

行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅关注类和对象的结构,更关注对象之间的协作。



行为模式又分类行为模式和对象行为模式:

  • 类行为模式:使用继承的方式来分配行为,通过多态的特性来实现父类和子类之间的职责的划分。

  • 对象行为模式:使用对象的聚合关联关系来分配行为。

3、设计模式详解

3.1、简单工厂模式

  • 定义

简单工厂模式属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的接口或父类。解决使用者对具体实现的依赖,使用者只用依赖工厂类,具体的实现类的实例化由工厂完成。



  • 适用场景和约束

工厂需要创建的对象的类型较少。

客户端需要知道具体类型与参数的对应关系。



  • 优点

客户端程序不需要依赖具体的实现类和实例化逻辑,实现了职责分离,如果引入配置文件,在不更改类的情况下,可以改变实现。



  • 缺点

如果增加实现需要修改工厂类。



3.2、单例模式

  • 定义

单例模式是一种对象创建型模式。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

  • 优点

对类的实例化过程进行了严格的控制,实现了实例的共享,解决了类实例化带来的资源消耗。

3.3、适配器模式

  • 定义

适配器模式将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以是类结构型模式,也可以是对象结构型模式。



  • 适用场景和约束

需要使用现有的类,而这些类的接口不符合系统的需要。



  • 优点

将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。



对于客户端类透明,而且提高了适配者的复用性。



灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,符合“开闭原则”。



3.4、策略模式

  • 定义

策略模式是一种对象行为型模式。策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。

  • 适用场景

系统需要动态地在几种算法中选择一种。

  • 优点

策略模式提供了对“开闭原则”的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为。



使用策略模式可以避免使用多重条件转移语句。



用户头像

天天向上

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
设计模式总结