开闭原则

介绍

  • 对扩展是开放的,对修改是关闭的(用抽象去构建框架,用实现扩展细节)。
  • 当软件发生变化是,尽量扩展实体行为来发生变化,而不是通过修改已有代码来产生变化

案例

 class GraphicEditor {

     public void drawShape(Shape s) {

         if (s.m_type==1)

             drawRectangle(s);

         else if (s.m_type==2)

             drawCircle(s);

     }

     public void drawCircle(Circle r) {}

     public void drawRectangle(Rectangle r) {}

 }

 class Shape {

     int m_type;

 }

 class Rectangle extends Shape {

     Rectangle() {

         super.m_type=1;

     }

 }

 class Circle extends Shape {

     Circle() {

         super.m_type=2;

     }

 } 

如果需要增加一个圆形,name需要修改下面这段代码,但是根据开闭原则,这对修改时候关闭,的所以他不符合开闭原则

 public void drawShape(Shape s) {

         if (s.m_type==1)

             drawRectangle(s);

         else if (s.m_type==2)

             drawCircle(s);

     }

可以是他继承一个相同的类。从而达到扩展是开放的。

 class GraphicEditor {
  public void drawShape(Shape s) {
  s.draw();
  }
 }

 class Shape {
  abstract void draw();
 }

 class Rectangle extends Shape  {
  public void draw() {

  }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值