• 设计模式学习之路(二)


    设计模式学习之路(二)

    面向对象

    面向对象编程:OOP 全称Object Oriented Programming。

    面向对象编程语言:OOPL 全称Object Oriented Programming Language。

    面向对象的特点:

    • 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。
    • 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程的特性(封装、继承、多态)的编程语言。

    按照严格的定义,很多语言都不能算得上面向对象编程语言,但按照不严格的定义来讲,现在流行的大部分编程语言都是面向对象编程语言。

    (1)封装

    封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。封装特性存在的意义,一方面是保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提高类的易用性。

    (2)抽象

    封装主要讲如何隐藏信息、保护数据,那抽象就是讲如何隐藏方法的具体实现,让使用者只需要关心方法提供了哪些功能,不需要知道这些功能是如何实现的。抽象可以通过接口类或者抽象类来实现,但也并不需要特殊的语法机制来支持。抽象存在的意义,一方面是提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围;另一方面,它也是处理复杂系统的有效手段,能有效地过滤掉不必要关注的信息。

    (3)继承

    继承是用来表示类之间的 is-a 关系,分为两种模式:单继承和多继承。单继承表示一个子类只继承一个父类,多继承表示一个子类可以继承多个父类。为了实现继承这个特性,编程语言需要提供特殊的语法机制来支持。继承主要是用来解决代码复用的问题。

    (4)多态

    多态是指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。多态这种特性也需要编程语言提供特殊的语法机制来实现,比如继承、接口类。多态可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础。

    接口和抽象类

    定义、区别(是什么),存在意义(从哪来),应用(到哪去)

    (1)定义

    抽象类:不允许实例化,只能被继承;可包含属性和方法,包含抽象方法;子类继承抽象类必须重写抽象方法。
    接口:不允许实例化,只能被实现;不包含属性和普通方法,包含抽象方法、静态方法、default 方法;类实现接口时,必须实现抽象方法。

    (2)意义

    抽象类:解决复用问题,适用于is-a的关系。
    接口:解决抽象问题,适用于has-a的关系。

    (3)应用

    解决复用问题:Java中的子类 FileInputStream 和 PipeInputStream等继承抽象类InputStream。重写了read(source)方法,InputStream 中还包含其他方法,FileInputStream继承抽象类复用了父类的其他方法。
    解决抽象问题:抽象类InputStream 实现了Closeable接口,该接口中包含close()抽象方法。Closeable这个接口还在很多其他类中实现了,例如Channel,Socket中都有close() 关闭这个功能,但具体实现每个类又各有不同的实现,这个就是抽象。

  • 相关阅读:
    科学计算——笔记
    Python_scrapyRedis零散
    Python博文_爬虫工程师是干什么的
    [单选题]怎样打开或创建一个文件?
    [问答题] 写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):
    [单选题]<?php$age =18;$age?$age+10:$age+20;echo $age;?>
    [单选题]有关PHP面向对象的说法,不对的是:
    [单选题]要循环操作非顺序索引的数组时,可以用下面哪个函数来读取数组当面元素的索引值?
    [单选题]PHP中定义常量的方法是:
    [单选题]stdClass的一个对象如何设置成员value的值?
  • 原文地址:https://www.cnblogs.com/zsiscool/p/12455826.html
Copyright © 2020-2023  润新知