zoukankan      html  css  js  c++  java
  • 面向对象编程的思想(3)

    开闭原则是面向对象开发中所有设计原则的核心

    名称:开闭原则(Open Closed Principle)OCP

    核心:一个对象对扩展开放,对修改关闭。换言之:程序中的实体对象(模块、类、方法等)应该可以进行扩展,但不应该可以修改。对类的修改是通过增加代码实现的,而不能通过修改代码实现。

    例子:例如我们设计一个Animal类:

     1 public class Animal{
     2     //动物会呼吸
     3     public void breath(){
     4         System.out.println("呼吸!");
     5     }   
     6 }

    设计一个Cat类继承Animal类:

    1 public class Cat extends Animal{
     2     public void catchMouse(){
     3         System.out.println("猫抓老鼠!");
     4     }   
     5 }   


    客户端测试代码:

     1 public class TestCat{
     2     public static void main(String[] args){
     3         Cat cat = new Cat();
     4         cat.breath();
     5         cat.catchMouse();
     6     }
     7 }

    运行结果:

    呼吸!
    猫抓老鼠!

    如果现在有一只超强的猫,叫mimi的也会游泳:实现过程如下:

    设计一个Animal类:

     1 public class Animal{
     2     //动物会呼吸
     3     public void breath(){
     4         System.out.println("呼吸!");
     5     }   
     6 }

    设计一个Cat类继承Animal类:

    1 public class Cat extends Animal{
     2     public void catchMouse(){
     3         System.out.println("猫抓老鼠!");
     4     }   
     5 }   

    设计一个MimiCat类:

     1 public class MimiCat extends Cat{
     2     public void swimming(){
     3         System.out.println("咪咪在游泳!");
     4     }   
     5 } 

    客户端测试代码:

      1 public class TestCat{
     2     public static void main(String[] args){
     3         Cat cat = new Cat();
     4         cat.breath();
     5         cat.catchMouse();
     6 
     7         System.out.println("超强猫mimi的行为:");
     8         MimiCat mimi = new MimiCat();
     9         mimi.breath();
    10         mimi.catchMouse();
    11         mimi.swimming();
    12     }
    13 }

    运行结果:

    呼吸!
    猫抓老鼠!
    超强猫mimi的行为:
    呼吸!
    猫抓老鼠!
    咪咪在游泳!
    请按 ENTER 或其它命令继续

    在这个过程中,对cat扩展成mimicat时,是通过添加代码实现,并没有修改cat的代码,对原来使用cat类的代码是没有影响的。

    总结:上边的MimiCat类作为Cat的子类,复用Cat和Animal的代码。并在父类的基础上添加新的行为。在面向对象的编程中,继承是抽象化的具体实现。

    优点:开放封闭原则的核心是面向抽象编程,而不是面向具体编程,抽象是相对稳定的,让类依赖与抽象,对修改来说就是封闭的。面向对象编程中的继承及多态机制,可以实现对抽象体的继承,重写方法改变其固有行为,实现新的方法,达到扩展开放的目标。

    后记:面向对象编程中,通过继承实现对类的扩展,实现封闭修改和扩展开发的目地。


  • 相关阅读:
    [golang]golang signal.Notify 信号,如何优雅的退出
    解密
    [财务][数据化分析][帆软]报表设计-数据分析(op=view)
    [财务][数据化分析][帆软]报表设计-填报预览
    [财务][数据化分析][帆软]如何量化你的用户价值?RFM模型综合实战
    [数据分析][RFM模型]用数据分析用户
    [帆软][内网穿透][LanProxy]蛋疼的网络架构探讨
    [财务][数据化分析][帆软]报表设计-分页预览
    [财务][数据化分析][帆软]报表设计-模板预览
    [财务][数据化分析][帆软]报表设计-聚合报表设计
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823170.html
Copyright © 2011-2022 走看看