首页 > 其他分享 > 依赖倒置原则

依赖倒置原则

时间:2023-04-08 14:37:16浏览次数:39  
标签:依赖 原则 TV void turnOff switchable turnOn 倒置 public

依赖倒置原则

/**
 * 依赖倒置原则(DIP)
 * TV(打开之前,)就可以控制灯的开关状态
 * 高方法,实现前,必须实现低方法, 执行入库前,记录日历
 */
public class dipTest {

  // 定义一个接口:开关
  public interface Switchable {
    void turnOn();

    void turnOff();
  }

  public static class Light implements Switchable {
    @Override
    public void turnOn() {
      System.out.println("Light is on");
    }

    @Override
    public void turnOff() {
      System.out.println("Light is off");
    }
  }

  // 高层模块:电视
  static class TV {
    private Switchable switchable;

    public TV(Switchable switchable) {
      this.switchable = switchable;
    }

    public void turnOn() {
      switchable.turnOn();
      System.out.println("打开电视");
    }

    public void turnOff() {
      switchable.turnOff();
      System.out.println("关闭电视");
    }
  }

  public static void main(String[] args) {
    // 创建一个灯对象
    Light light = new Light();

    // 创建一个电视对象,它依赖于灯对象
    TV tv = new TV(light);
    // 打开电视
    tv.turnOn();
    // 关闭电视
    tv.turnOff();
  }
}

标签:依赖,原则,TV,void,turnOff,switchable,turnOn,倒置,public
From: https://www.cnblogs.com/sjbd/p/17298504.html

相关文章

  • 依赖倒置
    依赖倒置原则是面向对象编程的一个重要原则之一,它指出高层模块不应该依赖于底层模块,它们应该都依赖于抽象的接口。而抽象的接口不应该依赖于具体实现,具体实现应该依赖于抽象的接口。下面是一个简单的基于Python的依赖倒置示例:pythonfromabcimportABC,abstractmethod......
  • 依赖注入
    当我们实现一个类时,有时候需要在类的构造函数中注入其它类的实例作为依赖。使用依赖注入可以使得代码更加灵活、可测试和可维护。下面是一个简单的基于Python的依赖注入示例:classEmailSender:defsend_email(self,to_addr:str,subject:str,body:str):p......
  • maven手动下载依赖
    有时候因为一些奇怪的原因,maven拉取不了依赖,此时需要手动下载maven依赖:进入中央仓库搜索需要的包https://mvnrepository.com/复制url根据模板拼接命令cmd命令模板:mvndependency:get-DremoteRepositories=url-DgroupId=groupId-DartifactId=artifactId-Dversion=ve......
  • pom中的maven依赖有一些拉取不了
    问题:项目里的pom文件中的maven依赖有一些拉取不了,在本地仓库也没有,但也有一些能正常拉取的。解决方法:方法1:点击maven的刷新按钮(reloadallproject)方法2:File->InvalidateCaches...,勾选所有4个选项,然后点击InvalidateandRestart。方法3:重启IDEA方法4:手动下载依赖,然后重......
  • SOLID设计原则
    SingleResponsibilityPrinciple(SRP):单一职责原则一个类或者一个模块只做一件事。减少功能之间的耦合程度。如厨师负责做菜,前台负责收银OpenClosedPrinciple(OCP):开闭原则对扩展开放,对修改关闭。一个类独立之后就不应该去修改它,而是以扩展的方式适应新需求。LiskovSubstituti......
  • 六条Prometheus最佳实践原则
    在Prometheus官网中对如何更好地使用该监控系统做了充分的说明,包括指标和标签命名、控制台和仪表盘、测量仪表、直方图和摘要、告警、用好PushGateway等。1.指标与标签的命名指标命名必须符合数据模型的有效字符。应该有一个与度量所属的域相关的应用程序前缀(客户端库函数有时将前......
  • flask请求上下文分析,源码request原理,wtforms,精确导出依赖,函数和方法,threading.locl对
    内容回顾蓝图第一步:导入第二步:实例化得到对象,可以指定static和templates第三步:app中注册蓝图,注册蓝图时,可以指定前缀第四步:使用蓝图,注册路由,注册请求扩展g对象当次请求的全局对象,在当次请求中可以放值和取值跟session的区别是session可以在多次请求中使用,g对象只在当次请......
  • 贯穿设计模式第一话--单一职责原则
    ......
  • flask之请求上下文分析之导出项目依赖-函数和方法的区别-threading.local对象-偏函数-
    目录flask之请求上下文分析之导出项目依赖-函数和方法的区别-threading.local对象-偏函数-flask整个生命执行流程--wtforms今日内容详细1请求上下文分析(源码:request原理)1.1导出项目的依赖1.2函数和方法1.3threading.local对象1.4偏函数1.5flask整个生命执行流程(1.1.4版本......
  • 忽略maven中冲突的依赖
    1:执行mvndependency:tree-Dverbose>tree.txt 2:打开tree.text文件例如这段[INFO]+-org.apache.mina:mina-core:jar:2.0.7:compile[INFO]|\-org.slf4j:slf4j-api:jar:1.6.6:compile//重复引入了slf4j那么需要在在pom依赖中添加忽略[INFO]\-......