zoukankan      html  css  js  c++  java
  • 软件设计模式与体系结构第一节课

    软件设计模式与体系结构


    面向对象的基础知识

    一、面向对象设计的表示方法
    UML
    二、面向对象的设计原则(互相依赖,互相补充)

    • 单一原则
    • 开闭原则**
    • 里氏代换原则
    • 依赖倒转原则**
    • 接口隔离原则
    • 合成复用原则
    • 迪米特法则

    好的系统设计应具备的性能:

    • 可扩展性(方便添加新功能,或修改当前功能)
    • 灵活性(可依据客户不同的要求进行配置)
    • 可插拔性(增加或减少功能,不影响其他功能的应用)

    软件的复用或重用:提高软件的开发效率,提高软件的质量,节约开发成本,改善系统的可维护性
    可维护性复用都是一面向对象设计原则为基础的

    重构:在不改变软件现有功能的基础上,通过调整程序代码改善软件质量、性能,是其程序设计模式和架构更趋合理,提高软件的扩展性和维护性。

    UML

    重点掌握类图及其表示方法;
    类图:

    • 类封装了数据和行为
    • 类之间的关系
    • 关联关系
    • 聚合/组合关系
    • 泛化关系(继承)
    • 接口实现(接口的作用很重要)

    其他辅助视图

    • 顺序图
    • 状态图

    单一职责原则

    一个对象应该只包含单一的职责,并且该职责完整地封装在一个类中。
    单一职责原则是实现高内聚、低耦合的指导方针

    开闭原则

    对扩展开放,对修改关闭

    在设计一个模块的时候,应当是这个模块可以在不被修改的前提下呗扩展,及在不修改源代码的情况下改变这个模块的行为。
    对可变性封装原则,将系统分为可变部分和固定部分,将可变因素封装起来,扩展新的功能时改变可变部分,不会对固定部分造成影响。

    里氏代换原则

    第一种定义方式:如果对每一类型为s的o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时;程度P的行为没有变换,那么类型S是类型T的子类型。

    第二种定义方式:所有引用基类(父类)的地方必须能透明地使用其子类的对象。

    因此在程序中尽量使用基类类型来对对象进行定义,而在运行时子确定其子类类型,用子类对象来替换父类对象

    依赖倒转原则

    定义

    • 高层模块不应该依赖底层模块,它们都应该依赖
    • 抽象不应该依赖于细节
    • 细节应该依赖于抽象

    另一种表述

    • 要针对接口编程,不要针对实现编程。

    代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程,而不是针对具体类编程。
    实现开闭原则的关键在于抽象化,并且从抽象化具体化现实,如果说开闭原则是面向对象设计的目标的话,依赖倒转原则就是面向对象设计的主要手段。

    实现方式:控制翻转在代码中使用抽象类,二而将具体的类放在配置文件中。

    依赖注入:

    • 构造注入(通过构造函数注入实例)
    • 设值注入(通过Setter方法注入实例)
    • 接口注入(通过接口方法注入实例)
  • 相关阅读:
    c#对XML读取
    WPF--TypeConverter使用
    WPF---对于没有Command属性的添加以下代码可以达到有Command效果
    自定义事件、属性、方法
    读取Excel文件
    ClickOnce安装部署,手动。
    Logger 日志记录
    Maven
    等待与通知范式
    线程状态及基本方法
  • 原文地址:https://www.cnblogs.com/zhixinlin/p/12352977.html
Copyright © 2011-2022 走看看