• OOP 思想 和 设计原则 及24种设计模式


    oop思想:封装、继承、多态            把组件实现和接口分开,并且让组件具有多态性
     
        面向对象编程是一种解决软件复用的设计和编程方法,这种方法把软件中相近相似的操作逻辑和操作应用数据、状态以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。
        
    封装: 封装可以使类具有独立性和隔离性;保证类的高内聚。只暴露给类外部或子类必须的属性和操作。
     
    继承:对现有类的一种复用机制。一个类如果继承现有的类,则这个类将拥有被继承类的所有菲斯有特性(属性和操作)。这里指的继承包含:类的继承和接口的实现。
     
    多态:多态是在继承的基础上实现的。多态的三个要素:继承、重写和父类引用指向子类对象。父类引用指向不同的子类对象时,调用相同的方法,呈现出不同的行为;几十类多态特性。多态可以分成编译时多态和运行时多态。
     
     
     
    oop 五大设计原则(SOLID原则)    外加  迪米特法则  和  组合优于继承原则(合成复用原则):
    一、单一职责原则
            单一职责有2个含义,一个是避免相同的职责分散到不同的类中,另一个是避免一个类承担太多职责。减少类的耦合度,提高类的复用性。
     
    二、接口隔离原则
        表明客户端不应该被强迫实现一些他们不会使用的接口,应该把胖接口中的方法分组,然后用多个接口代替它,每个接口服务于一个子模块。简单说,就是使用多个专门的接口比使用单个接口好很多。
        该原则观点如下:
            1、一个类对另外一个类的依赖性应当是建立在最小的接口上
            2、客户端程序不应该依赖它不需要的接口方法。
     
    三、开放-封闭原则
        open模块的行为必须是开放的、支持扩展的,而不是僵化的。
        closed在对模块的功能进行扩展时,不应该影响或大规模影响已有的程序模块。一句话概括:一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。
        核心思想就是对抽象编程,而不对具体编程。
     
    四、替换原则
        子类型必须能够替换掉他们的父类型、并出现在父类能够出现的任何地方。
        主要针对继承的设计原则
        1、父类的方法都要在子类中实现或者重写,并且派生类只实现其抽象类中生命的方法,而不应当给出多余的,方法定义或实现。
        2、在客户端程序中只应该使用父类对象而不应当直接使用子类对象,这样可以实现运行期间绑定。
     
    五、依赖倒置原则
        上层模块不应该依赖于下层模块,他们共同依赖于一个抽象(父类不能依赖子类,他们都要一类抽象类)
        抽象不能依赖于具体,具体应该要依赖于抽象
     
     
    24种设计模式(gof23+1)
            创建型模式:
                1、简单工厂模式(不包含在gof23中)
                2、工厂模式
                3、抽象工厂模式
                4、单例模式
                5、原型模式
                6、创建者模式
            结构型模式:
                1、组合模式
                2、装饰者模式
                3、外观模式
                4、适配器模式
                5、代理模式
                6、享元模式
                7、桥接模式
            行为型模式
                1、观察者模式
                2、策略者模式
                3、状态模式
                4、中介模式
                5、模板方法
                6、命令模式
                7、备忘录模式
                8、访问者模式
                9、解释器模式
                10、迭代器模式
                11、职责链模式
     
  • 相关阅读:
    75张图带你了解网络设备、网络地址规划、静态路由、实战演练
    37张图详解MAC地址、以太网、二层转发、VLAN
    用Python计算最长公共子序列和最长公共子串(转)
    python多线程为什么不能利用多核cpu
    python实现leetcode算法题库-maxLengthofRepeatedSubarray-最长公共子序列(718)
    python实现leetcode算法题库-twoSum-两数之和(1)
    python字符串与列表及字典的相互转化
    python sorted函数的使用
    python 2/3重定向输出文件
    elasticsearch查询时设置最大返回数 max_result_window | 限制字段总数超1000
  • 原文地址:https://www.cnblogs.com/hzkj/p/9265538.html
Copyright © 2020-2023  润新知