当前位置: 首页 > news >正文

人工智能建筑设计软件朝阳区seo技术

人工智能建筑设计软件,朝阳区seo技术,公司网站建设开发维护工作,做网站域名文章目录 3.3 依赖倒转原则(DIP)3.3.1概述3.3.2 案例 3.3 依赖倒转原则(DIP) 依赖倒转原则:Dependency Inversion Principle,DIP 3.3.1概述 高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细…

文章目录

    • 3.3 依赖倒转原则(DIP)
      • 3.3.1概述
      • 3.3.2 案例

3.3 依赖倒转原则(DIP)

依赖倒转原则:Dependency Inversion Principle,DIP

3.3.1概述

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

3.3.2 案例

下面看一个例子来理解依赖倒转原则

【例】组装电脑

现要组装一台电脑,需要配件cpu,硬盘,内存条。只有这些配置都有了,计算机才能正常的运行。选择cpu有很多选择,如Intel,AMD等,硬盘可以选择希捷,西数等,内存条可以选择金士顿,海盗船等。

在这里插入图片描述

public class InterCpu {public void runCpu(){System.out.println("Inter的cpu正在运行...");}
}
====================================================public class KingstonMemory {public void saveMemory(){System.out.println("使用金士顿作为内存条...");}
}
====================================================public class XiJieHardDisk {public void saveDisk(String data){System.out.println("从硬盘获取的数据是:"+data);}public String  getData(){System.out.println("获取硬盘数据操作...");return "获取硬盘数据完成。";}
}
====================================================public class Computer {private XiJieHardDisk hardDisk;//硬盘private InterCpu cpu;// cpuprivate KingstonMemory memory;//内存public Computer() {}public Computer(XiJieHardDisk hardDisk, InterCpu cpu, KingstonMemory memory) {this.hardDisk = hardDisk;this.cpu = cpu;this.memory = memory;}public XiJieHardDisk getHardDisk() {return hardDisk;}public void setHardDisk(XiJieHardDisk hardDisk) {this.hardDisk = hardDisk;}public InterCpu getCpu() {return cpu;}public void setCpu(InterCpu cpu) {this.cpu = cpu;}public KingstonMemory getMemory() {return memory;}public void setMemory(KingstonMemory memory) {this.memory = memory;}public void runComputer(){System.out.println("计算机正在工作...");cpu.runCpu();memory.saveMemory();hardDisk.saveDisk("你好Java。");String data = hardDisk.getData();System.out.println(data);}
}
=========================================================//测试类public class ComputerTest {public static void main(String[] args) {// 创建计算机组件内存、硬盘、cpuKingstonMemory k = new KingstonMemory();//表示内存InterCpu  i = new InterCpu();// 表示 cpuXiJieHardDisk x = new XiJieHardDisk();// 表示硬盘// 创建计算机对象,并组装(即,传入组件参数)Computer computer = new Computer(x,i,k);// 运行计算机computer.runComputer();}
}

上面代码可以看到已经组装了一台电脑,但是似乎组装的电脑的cpu只能是Intel的,内存条只能是金士顿的,硬盘只能是希捷的,这对用户肯定是不友好的,用户有了机箱肯定是想按照自己的喜好,选择自己喜欢的配件。如果想换成不是Intel的cpu需要修改Computer类,这就违背了开闭原则。

根据依赖倒转原则进行改进:

在这里插入图片描述

// Cpu接口
public interface Cpu {public abstract void runCpu();
}
===========================================================// 硬盘接口
public interface HardDisk {public abstract void saveDate(String date);public abstract String getDate();
}
==========================================================// 内存接口
public interface Memory {public abstract void saveMemory();
}
==========================================================//IntelCpu类实现Cpu接口public class IntelCpu implements Cpu{@Overridepublic void runCpu() {System.out.println("InterCpu正在运行...");}
}
==========================================================// 新增Amd类型的cpu 
public class AmdCpu implements Cpu{@Overridepublic void runCpu() {System.out.println("AMD Cpu正在运行...");}
}
==========================================================// KingstonMemory类实现Memory接口
public class KingstonMemory implements Memory{@Overridepublic void saveMemory() {System.out.println("使用金士顿作为内存条...");}
}
==========================================================// XiJieHardDisk类实现HardDisk接口
public class XiJieHardDisk implements HardDisk{@Overridepublic void saveDate(String date) {System.out.println("从硬盘获取的数据是:"+date);}@Overridepublic String getDate() {System.out.println("获取硬盘数据操作...");return "获取硬盘数据完成。";}
}
============================================================//聚合各种组件public class Computer {private HardDisk hardDisk;private Cpu cpu;private Memory memory;public Computer() {}public Computer(HardDisk hardDisk, Cpu cpu, Memory memory) {this.hardDisk = hardDisk;this.cpu = cpu;this.memory = memory;}public HardDisk getHardDisk() {return hardDisk;}public void setHardDisk(HardDisk hardDisk) {this.hardDisk = hardDisk;}public Cpu getCpu() { return cpu;}public void setCpu(Cpu cpu) { this.cpu = cpu;}public Memory getMemory() { return memory;}public void setMemory(Memory memory) {this.memory = memory;}//运行计算机方法public void runComputer(){System.out.println("计算机正在工作...");cpu.runCpu();memory.saveMemory();hardDisk.saveDate("你好Java。");String data = hardDisk.getDate();System.out.println(data);}
}
=======================================================//测试类public class ComputerTest {public static void main(String[] args) {// 创建计算机的组件:内存、cpu、硬盘// Cpu cpu = new IntelCpu();Cpu cpu = new AmdCpu();HardDisk hardDisk = new XiJieHardDisk();Memory memory = new KingstonMemory();// 创建计算机Computer computer = new Computer(hardDisk,cpu,memory);// 运行计算机computer.runComputer();}
}

上述代码根据依赖倒转原则改进后扩展性比较好,如想换AMD类型的Cpu,只需子新增一个AmdCpu类去实现Cpu接口,重写Cpu里的抽象方法,再在测试类中去用Cpu接口去接AmdCpu的对象即可,这样就不用修改Computer类里面的代码了。

http://www.tj-hxxt.cn/news/32776.html

相关文章:

  • 外贸网站建设推广费用想做电商怎么入手
  • 珠海专业机械网站建设大数据营销成功案例
  • 诸城做网站找个人厦门关键词排名优化
  • 自助建站网站建设设计公司百度首页关键词优化
  • 网站建设实施计划包括哪些腾讯企点账户中心
  • 张掖做网站百度百科合作模式
  • 汉中党建网站作风建设网络推广员上班靠谱吗
  • 做故障风的头像的网站外贸网站建设优化推广
  • 梅州正规的免费建站宁波seo关键词优化教程
  • 杭州哪家做网站比较好安卓神级系统优化工具
  • 网站实名认证功能怎么做百度号码认证平台
  • 太原做网站页面的企业网站建设制作
  • 有什么做视频的免费素材网站免费二级域名生成网站
  • 做购物网站的目的中国知名网站排行榜
  • js网站下拉置顶代码短视频seo排名系统
  • 做电影网站的服务器百度框架户开户渠道
  • 找个美工做淘宝网站需要多少钱seo渠道是什么意思
  • 开展网络营销的企业网站有哪些网站推广公司哪家好
  • 沈阳做网站好的搜索引擎推广排名
  • 动漫制作专业零基础微信seo什么意思
  • 公众号怎么推广快又有效seo自学教程seo免费教程
  • 长沙新增活动轨迹搜索引擎优化的主要特征
  • 红豆梧州论坛独立站seo建站系统
  • 高校里做网站的工作军事新闻俄乌最新消息
  • 云主机放多个网站微信指数查询入口
  • 宽带动态ip如何做网站访问站长之家是什么
  • wordpress 设置常规站点地址城市分站seo
  • 建设酒类产品网站的好处网站推广是什么
  • 响应式网站案例seo概念
  • 定制网站建设公司价格百度app推广