zoukankan      html  css  js  c++  java
  • 设计模式的概念以及面向对象设计原则

    设计模式的定义
    设计模式(Design Pattern)是一套面向对象的代码设计经验总结。
    设计模式是一种思想,也是一种技术。
    一种设计模式就是一种解决实际问题的方案。
    每一种设计模式虽然有既定的结构图和基本程序代码,但是应该不局限于此,要理解其精髓而熟练应用。

    OOP的六大设计原则

    单一职责原则
    定义:对于一个类,应该只有一个引起它变化的原因。
    |-----降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单。
    |-----提高类的可读性,提高系统的可维护性。

    里氏代换原则
    定义:子类型必须能够替换掉它们的父类型。
    |-----反映了子类和父类的关系
    |-----如果一个软件实体使用的是一个父类,那么就肯定适用于其子类,并且该软件实体察觉不出父类对象和子类对象的区别。
    |-----正是由于父类型的可替换性,才使得父类类型的模块在无需修改的情况下,就可以通过使用不同的子类得到扩展。
    |-----里氏替换原则是对实现抽象化的具体步骤的规范。

    开放-封闭原则
    定义:程序的实体对象(模块、类、函数等)应该可以进行扩展,但不应该可以修改。
    |-----开闭原则是面向对象开发中所有设计原则的核心。
    |-----对已有程序的扩展优先采用添加新的类或者模块的方式来进行,而不是通过修改现有的类或者模块来进行。
    |-----软件设计本身所追求的目标就是封装变化、降低耦合,OCP是对这一目标的最直接的体现。

    依赖倒转原则
    定义:程序的高层模块不应该依赖底层模块,但两者都应依赖于抽象;抽象不应该依赖于具体,而细节应该依赖于抽象。
    |-----即要针对接口编程,而不是针对实现编程。
    |-----依赖倒转原则的本质是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,从而实现模块间的松耦合。
    |-----简单来将,依赖倒转原则就是要求客户端应该依赖于抽象耦合。传统的过程性系统设计倾向于使高层次模块依赖于低层次模块,抽象的层次依赖于具体的层次。现在要将这个错误的依赖关系“倒转”过来。
    |-----使用这个原则,意味着上层类不直接使用底层类,他们使用接口作为抽象层。

    合成/聚合复用原则
    定义:尽量不适用类继承,而尽量使用合成/聚合。
    |-----聚合表示弱的拥有关系,合成则表达强的拥有关系,体现的是严格的整体与部分之间的关系。

    迪米特法则
    定义:如果两个类之间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,可以通过第三方来转发这个调用。
    |-----talk only to your immediate friends.
    |-----强调的前提是在类的结构设计上,每一个类都要尽量降低成员的访问权限,类自己包装好自己的private状态,不需要让别的类知道的属性or行为就不公开。
    |-----迪米特法则的根本思想,是强调类之间的尽量实现松散耦合。类之间的耦合越弱,越有利于复用。

     

  • 相关阅读:
    字节输入流抽象类InputStream
    CentOS6.2使用yum安装LAMP及phpMyadmin(转)
    文件字节流类(不是抽象的)FileInputStream和FileOutputStream
    字节输出流抽象类OutputStream
    编译安装GD库出错解决(转)
    关于empty函数的判断
    PHP获取用户的用户的真实IP地址(转)
    字符输入输出流与字节输入输出流
    关于empty函数的输出
    thinkphp 多表 事务(转)
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8978784.html
Copyright © 2011-2022 走看看