zoukankan      html  css  js  c++  java
  • 面向过程、面向对象、面向服务、面向切面

    转载请注明原文地址: https://www.cnblogs.com/ygj0930/p/10828210.html

    一:从 面向过程 走向 面向对象

        在早期进行软件开发的时候,计算机配置低、内存小,节省内存成了首要目标,哪怕是运行的时间长些也无所谓,由此诞生的“面向过程编程”采取“时间换空间”的策略,少存储、运算过程中涉及到的数据都在内存中暂存,直至运算结束。

       随着技术的发展,存储不再成为瓶颈。相反,如何更好地模拟世界、表达世界、提高系统的可维护性等问题越显重要,于是面向对象设计应运而生。

       到目前为止,运行在PC上的程序由于不太需要考虑硬件的限制,而系统的可维护性等方面却要求很高,一般采用面向对象方式进行开发;

       而对于内存限制有较高要求的嵌入式系统,则大多采用面向过程方式进行设计编程。

    二:面向过程编程——为解决问题而生,一个函数一个目的

        面向过程编程是 将要解决的问题分解为一个个要解决的 步骤,然后 用函数 把这些步骤一步一步的实现,然后再一一调用函数,解决问题。

        例如:五子棋游戏

      1、开始游戏

      2、黑子先走,

      3、绘制画面,

      4、判断输赢,

      5、轮到白子,

      6、绘制画面,

      7、判断输赢,

      8、返回步骤2,

      9、输出最后结果。

      把上面每个步骤用分别的函数来实现,问题就解决了。

    三:面向对象编程——将解决问题的过程抽象为多个对象协同作战的过程

         面向对象编程则是把构成问题的事务分解成各个 对象,而建立对象的目的也不是单纯为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为,对象中可能不只一个行为(函数),还会有其他的用于描述或者解决其他问题的属性、行为。

        面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:

      1、棋子对象,这两方的行为是一模一样的,

      2、棋盘对象,负责绘制画面,

      3、规则对象,负责判定诸如犯规、输赢等。

        

       面向对象三大特性:封装、继承、多态

        封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

        继承:继承是类与类的一种关系,子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用

        多态:主要指引用多态、方法多态。

                 引用多态是指:父类引用可以指向本类对象,也可指向子类对象;

                 方法多态:子类中可以重写父类的方法,在调用方法时根据引用指向的子类对象决定调用哪个具体的方法。

      面向对象五大基本原则

        单一职责原则:一个类的功能要单一,不能包罗万象。

        开放封闭原则:一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的,比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

        里氏替换原则:子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

        依赖倒置原则:具体依赖抽象,上层依赖下层。比如:假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能 造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

        接口分离原则:模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。

    四:面向服务的诞生

        面向服务编程是基于“系统开发”层面而言的。如果是面向过程、面向对象编程是为了解决一个问题,那么面向服务开发则是为了实现一个系统、一个程序。

        一个系统或应用程序的功能是 由一些松耦合并且具有统一接口定义方式的组件(也就是 服务) 提供的,一个功能由一个服务来提供,多个服务组合而成系统/程序

    五:面向切面编程(AOP)

        将通用需求功能从不相关类之中分离出来,成为一个行为。

        同时,使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。

        切面的意思就是:将一系列类作为平面,有共享行为的类以“行为”为切点相切

  • 相关阅读:
    [Linux系统] (3)应用安装方式详解(编译安装、rpm包安装、yum安装)
    [Linux系统] (2)用户权限管理
    jQuery.Validate验证库详解
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    原生js记住密码
    静态网站公用的部分模块的引用(设置)方法
    针对特定浏览器起作用的CSS: IE Chrome Firefox CSS Hack
    HTML5 video 视频标签全属性详解
    js for循环,为什么一定要加var定义i变量
    用谷歌浏览器来当手机模拟器
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10828210.html
Copyright © 2011-2022 走看看