面向对象设计原则

1. 面向对象设计原则概述

1.1 软件可维护性和可复用性

一个易于维护的系统就是复用率高的系统,但是实际上软件的可维护性和可复用性是两个独立的目标。

1.2 面向对象设计原则

1.2.1 单一职责原则

用于控制类的粒度大小。一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。

1.2.2 开闭原则

开闭原则是面向对象的可复用设计的一块基石,它是最重要的面向对象设计原则。也就是在设计一个模块时,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源码的情况下改变这个模块的行为。

1.2.3 里氏代换原则

开闭原则的核心是对系统进行抽象化,并且从抽象化导出具体化,
从抽象化到具体化的过程需要使用继承关系。

  • 定义

所有引用基类的地方必须能透明地使用其子类的对象

1.2.4 依赖倒转原则

要针对接口编程,不要针对实现编程。

1. 类之间的耦合
  • 零耦合
  • 具体耦合关系
  • 抽象耦合关系
2. 依赖注入
  • 构造器注入
public interface AbstractBook{
     public void view();
}

public interface AbstractReader{
    public void read();
}

public class ConcreteBook implements AbstractBook{
   public void view(){
      ...
   }
}

public class ConcreteReader implements AbstractReader{
  private AbstractBook book;
  public ConcreteReader(AbstractBook book){
     this.book = book;
  }
  public void read(){
     book.view();
  }
}
  • 设置注入
public interface AbstractBook{
   public void view();
}

public interface AbstractReader{
   public void setBook(AbstractRerader book);
   public void read();
}

public class ConcreteBook implements AbstractBook{
   public void view(){
     ...
   }
}
public class ConcreteReader implements AbstractReader{
   private AbstractBook book;
   public void setBook(AbstractBook book){
     this.book = book;
   }
   public void read(){
     book.view();
   }
}


  • 接口注入
public interface AbstractBook{
   public void view();
}

public interface AbstractReader{
  public void read(AbstractBook book);
}

public class ConcreteBook implements AbstractBook{
   public void view(){
      ... 
   }
}
public class ConcreteReader implements AbstractReader{
  public void read(AbstractBook book){
      book.view();
  }
}

1.2.5 接口隔离原则

客户端不需要依赖那些它不需要的接口

1.2.6 合成复用原则

尽量使用对象的组合,而不是使用继承来达成目的

1.2.7 迪米特法则

用于降低系统的耦合度,使类与类之间保持松散的耦合关系

  • 不要和陌生人说话
  • 只与你直接的朋友通信
  • 每一个软件单位与其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李同学va

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值