• 设计模式概述


    前言
      设计模式的本质是面向对象设计原则的实际运用,
      是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解


    设计模式的三种分类
    创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。

    结构型模式:把类或对象结合在一起形成一个更大的结构。

    行为型模式:类和对象如何交互,及划分责任和算法。

    类(Class)
    是指具有相同属性、方法和关系的对象的抽象,
    它封装了数据和行为,是面向对象程序设计(OOP)的基础,具有封装性、继承性和多态性等三大特性。

    接口(Interface)
    是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。
    它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。

    类之间的关系
    1.依赖(Dependency)关系是一种使用关系,
    它是对象之间耦合度最弱的一种关联方式,是临时性的关联
    在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用
    来访问另一个类(被依赖类)中的某些方法来完成一些职责。
    2.关联(Association)关系是对象之间的一种引用关系,
    用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。
    关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系
    3.聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,
        是 has-a 的关系。

    聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,
    但是成员对象可以脱离整体对象而独立存在
    例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。
    4.组合(Composition)关系也是关联关系的一种,
    也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 comtains-a 关系
    在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,
    部分对象不能脱离整体对象而存在
    例如,头和嘴的关系,没有了头,嘴也就不存在了。
    5.继承


    设计模式七大原则

    1.单一职责
    单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。
    每个方法,类,框架只做一件事
    代码重用性提高,代码可读性提高
    此时代码就像一个大纲

    2.开闭原则
    可以通过“抽象约束、封装变化”来实现开闭原则,
    即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中
    对扩展开放,对修改关闭

    3.接口隔离原则
    将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法
    使用多个专门的接口,比使用单一的总接口好

    4.依赖反转
    依赖于抽象接口,不依赖于具体实现。降低程序耦合。
    由依赖《箭头向下》,转换为接口《箭头向上》
    例:人依赖大米(人吃大米),转换成-->人依赖食物,大米实现食物接口

    5.迪米特法则(封装
    从依赖者的角度来说,只依赖应该依赖的对象。
    从被依赖者的角度说,只暴露应该暴露的方法。

    6.里氏替换原则(is a)
    子类可以扩展父类的功能,但不能改变父类原有的功能
    子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。
    子类对象可以随时随地替换父类对象,替换后不会报错,也不会有业务逻辑问题

    7.组合优于继承
    类于类之间的关系
    1.继承
    2.依赖
    3.关联
    关联的细分
    1.组合:关系强
    2.聚合:关系弱
    继承的缺点:
    继承复用破坏了类的封装性
    子类与父类的耦合度高
  • 相关阅读:
    学习Python的体会 (1)
    李敖的管理经
    《inside the c++ object model》读书笔记 之五 构造,解构,拷贝语意学
    《inside the c++ object model》读书笔记 之四 Function 语意学
    《inside the c++ object model》读书笔记 之三:Data语意学
    《inside the c++ object model》读书笔记 之六 执行期语意学
    排序算法插入排序/冒泡排序
    《inside the c++ object model》读书笔记 之七 站在对象模型的尖端
    《inside the c++ object model》读书笔记 之二:构造函数
    《inside the c++ object model》读书笔记 之一:对象
  • 原文地址:https://www.cnblogs.com/loveer/p/11287941.html
Copyright © 2020-2023  润新知