(一)设计模式概述

itmahy
itmahy
发布于 2024-01-19 / 132 阅读
0
0

(一)设计模式概述

1.面向对象

把数据以及数据的操作方法放到一起,作为一个相互依存的整体——对象。对同类对象抽象其形成共性,形成类。。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。

1.1面向对象的三大特征:

  • 封装

    例如实体类,属性private修饰,意为私有的,方法(get、set等方法)使用public修饰,意为外部可以对属性值进行操作。

  • 继承

    子类继承父类,可以得到父类的所有属性以及方法。

  • 多态

    一个行为可以有多种不同的表达方式。例如方法的重载与重写....

1.2 面向对象的特点

面向对象的特点是可维护可复用可扩展灵活性好,它真正强大的地方在于:随着业务变得越来越复杂,面向对象依然能够使得程序结构良好,而面向过程却会导致程序越来越臃肿。让面向对象保持结构良好的秘诀就是设计模式,今天力扣就带领大家一起来探索设计模式的世界!

2.设计模式

设计模式的世界丰富多彩,比如生产一个个「产品」的工厂模式,衔接两个不相关接口的适配器模式,用不同的方式做同一件事的策略模式,构建步骤稳定、根据构建过程的不同配置构建出不同对象的建造者模式等。面向对象结合设计模式,才能真正体会到程序变得可维护、可复用、可扩展、灵活性好。设计模式对于程序员而言并不陌生,每个程序员在编程时都会或多或少地接触到设计模式。无论是在大型程序的架构中,亦或是在源码的学习中,设计模式都扮演着非常重要的角色。

设计模式基于六大原则

  • 开闭原则:一个软件实体如类、模块和函数应该对修改封闭,对扩展开放。

  • 单一职责原则:一个类只做一件事,一个类应该只有一个引起它修改的原因。

  • 里氏替换原则:子类应该可以完全替换父类。也就是说在使用继承时,只扩展新功能,而不要破坏父类原有的功能。

  • 依赖倒置原则:细节应该依赖于抽象,抽象不应依赖于细节。把抽象层放在程序设计的高层,并保持稳定,程序的细节变化由低层的实现层来完成。

  • 迪米特法则:又名「最少知道原则」,一个类不应知道自己操作的类的细节,换言之,只和朋友谈话,不和朋友的朋友谈话。

  • 接口隔离原则:客户端不应依赖它不需要的接口。如果一个接口在实现时,部分方法由于冗余被客户端空实现,则应该将接口拆分,让实现类只需依赖自己需要的接口方法。

设计模式的分类

  • 5种构建型模式: 构建型模式就是构建对象的

    • 工厂方法模式: 为每一类对象建立工厂,将对象交由工厂创建,客户端只和工厂打交道

    • 抽象工厂模式: 为每一类工厂提取出抽象接口,使得新增工厂、替换工厂变得非常容易

    • 单例模式: 全局使用同一个对象,分为饿汉式和懒汉式。懒汉式有双检锁和内部类两种实现方式

    • 建造型模式:用于创建构造过程稳定的对象,不同的 Builder 可以定义不同的配置

    • 原型模式: 为一个类定义 clone 方法,使得创建相同的对象更方便

  • 7种结构型模式: 结构型模式是用来设计程序的结构的。结构型模式就像搭积木,将不同的类结合在一起形成契合的结构。

    • 适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。用于有相关性但不兼容的接口.

    • 桥接模式: 用于同等级的接口互相组合

    • 组合模式: 用于整体与部分的结构

    • 装饰模式

    • 外观模式

    • 享元模式

    • 代理模式

  • 11种行为型模式:行为型模式重点关注 类与类之间的交互与协作。如同在工作中,每个人的行为都可能影响到其他同事,同时每个人也会受到别人的影响。我们一边接收上级的指令,一边派发任务给下级,在这样的协作中完成一项项伟大的工作。程序在运行时,每个对象都不是孤立的,他们可以通过通信与协作完成种种复杂的功能。

    • 责任链模式

    • 命令模式

    • 解释器模式

    • 迭代器模式

    • 中介者模式

    • 备忘录模式

    • 观察者模式

    • 状态模式

    • 策略模式

    • 模板方法模式

    • 访问者模式


评论