• 设计模式概述


    一、设计模式概念

    软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用

    二、设计模式的分类

    • 创建型模式

    用于描述 “怎么创建对象”,主要把对象的创建和使用分离,包括单例、原型、工厂、抽象工厂、建造者

    • 结构性模式

    用户描述如何将类或者对象组成更大的结构,代理、适配器、桥接、装饰、外观、享元、组合

    • 行为型模式

    用于描述类和对象之间怎么互相完成单个对象无法完成的任务,包括模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器

    三、UML

    统一建模语言,用来设计软件的可视化建模语言,包括用例图、类图、对象图、活动图、时序图、状态图、协作图、构件图、部署图9中图,其中类图是显示模型的静态结构图、特别是模型中存在的类、类的内部结构以及他们与其它类的关系。设计模式中使用类图能更见可观的认识设计模式

    四、类图的表示方式

    1、类的表示

    在uml图中,类使用包含类型、属性、方法且带有分割线的矩形表示,如下一个Person类图,包含name、age2个属性一级work方法

     属性或方法前的加减号表示属性、方法的可见性

    -:表示price

    +:表示public

    #:表示protected

    属性完整表示方式:可见性 名称 :类型 [-缺省值]

    方法完整表示方式:可见性 名称 (参数泪飙):返回类型

    2、类之间的关系表示

    关联关系可以表示类和另一个类对象之间的联系、比如老师和学生、丈夫和妻子等。分为一般关联关系、聚合关系、和组合关系

    2.1、一般关系

    一般关系可以分为单向关联、双向关联、自关联

    单向关联

    类图中用一条带箭头的实线表示,如下每个user都有一个身份证,这通过user类持有一个类型为card的成员变量类实现

    双向关联

    用一个不带箭头的直线表示双方各自持有对方类型的成员变量,如下user持有一个List,表示每个user可以有多个老师,在teacher中持有一个List表示一个老师有多个学员

     自关联

     用一个带有箭头且指向自身的先表示,如下表示Node类包含类型为Node的成员变量

     2.2、聚合关系

    2.3、 组合关系

    2.4、依赖关系

    2.5、继承关系

    2.6、实现关系 

    五、软件设计原则

    为了是程序的扩展性好、易于维护和升级,程序猿要尽量根据6条原则来开发程序

    1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进⾏拓展的时候,不能去修改原有的代码,实现⼀个热插拔的效果。 所以⼀句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使⽤接⼝和抽象类,后⾯的具 体设计中我们会提到这点。

    2、⾥⽒代换原则(Liskov Substitution Principle) ⾥⽒代换原则(Liskov Substitution Principle LSP)⾯向对象设计的基本原则之⼀。 ⾥⽒代换原则中说,任何基类 可以出现的地⽅,⼦类⼀定可以出现。 LSP是继承复⽤的基⽯,只有当衍⽣类可以替换掉基类,软件单位的功能不受到影响时, 基类才能真正被复⽤,⽽衍⽣类也能够在基类的基础上增加新的⾏为。⾥⽒代换原则是对“开-闭”原则的补充。实现“开-闭”原则 的关键步骤就是抽象化。⽽基类与⼦类的继承关系就是抽象化的具体实现,所以⾥⽒代换原则是对实现抽象化的具体步骤的规 范。—— From Baidu 百科

    3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,

    具体内容:针对接⼝编程,依赖于抽象⽽不依赖于具体。

    4、接⼝隔离原则(Interface Segregation Principle) 这个原则的意思是:使⽤多个隔离的接⼝,⽐使⽤单个接⼝要好。还是⼀个降低类之间的耦合度的意思,从这⼉我们看出, 其实设计模式就是⼀个软件的设计思想,从⼤型软件架构出发,为了升级和维护⽅便。所以上⽂中多次出现:降低依赖,降低耦 合。

    5、迪⽶特法则(最少知道原则)(Demeter Principle) 为什么叫最少知道原则,就是说:⼀个实体应当尽量少的与其他实体之间发⽣相互作⽤,使得系统功能模块相对独⽴。

    6、合成复⽤原则(Composite Reuse Principle) 原则是尽量使⽤合成/聚合的⽅式,⽽不是使⽤继承

  • 相关阅读:
    双基证券:游戏版号发放整体趋势的向好将持续优化供给端
    5.2 磁盘CRC32完整性检测
    基于Java+freemarker实现动态赋值以及生成Word文档
    jquery漂亮的翻书效果应用于tp项目中
    Linux 学习之路 -- 进程篇 -- 进程控制
    JUC——AQS
    (5)建造者模式
    【JVM基础】虚拟机栈
    【FPGA教程案例76】通信案例2——基于FPGA的滑动窗口累加器实现
    Redis数据缓存(Redis的缓存击穿和穿透的区别)
  • 原文地址:https://blog.csdn.net/qq_34491508/article/details/131150094