依赖倒转原则
。
/**
* @Description:希捷硬盘
*/
public class XiJieHardDisk {
//存储数据的方法
public void save(String data){
System.out.println("使用希捷硬盘存储数据为:" + data);
}
//获取数据的方法
public String get(){
System.out.println("使用希捷硬盘获取数据");
return "数据";
}
}
/**
* @Description:金士顿内存条类
*/
public class KingstonMemory {
public void save(){
System.out.println("使用金士顿内存条");
}
}
/**
* @Description:因特尔的CPU
*/
public class IntelCpu {
public void run() {
System.out.println("使用Intel处理器");
}
}
package principles.dependTrans.before;
public class Computer {
//将三个配件组合在一起
//声明成员变量
private XiJieHardDisk hardDisk;
private IntelCpu cpu;
private KingstonMemory memory;
//提供对应的get和set方法
public XiJieHardDisk getHardDisk() {
return hardDisk;
}
public void setHardDisk(XiJieHardDisk hardDisk) {
this.hardDisk = hardDisk;
}
public IntelCpu getCpu() {
return cpu;
}
public void setCpu(IntelCpu cpu) {
this.cpu = cpu;
}
public KingstonMemory getMemory() {
return memory;
}
public void setMemory(KingstonMemory memory) {
this.memory = memory;
}
//提供运行计算机的方法
public void run(){
System.out.println("运行计算机。");
//首先从硬盘获取数据
String data = hardDisk.get();
System.out.println("从硬盘上获取的数据是:" + data);
//然后运行cpu
cpu.run();
//最后调用内存保存数据
memory.save();
}
}
public class ComputerTest {
public static void main(String[] args) {
//创建组件对象
XiJieHardDisk hardDisk = new XiJieHardDisk();
IntelCpu cpu = new IntelCpu();
KingstonMemory memory = new KingstonMemory();
//创建计算机对象
Computer c = new Computer();
//组装计算机
c.setCpu(cpu);
c.setHardDisk(hardDisk);
c.setMemory(memory);
//运行计算机
c.run();
}
}
package principles.dependTrans.after;
/**
* @Description:希捷硬盘
*/
public class XiJieHardDisk implements HardDisk {
//存储数据的方法
public void save(String data){
System.out.println("使用希捷硬盘存储数据为:" + data);
}
//获取数据的方法
public String get(){
System.out.println("使用希捷硬盘获取数据");
return "数据";
}
}
/**
* @Description:金士顿内存条类
*/
public class KingstonMemory implements Memory{
public void save(){
System.out.println("使用金士顿内存条");
}
}
/**
* @Description:因特尔的CPU
*/
public class IntelCpu implements Cpu{
public void run() {
System.out.println("使用Intel处理器");
}
}
/**
* @Description:cpu 接口
*/
public interface Cpu {
//运行cpu
public void run();
}
/**
* @Description:硬盘接口
*/
public interface HardDisk {
//存储数据
public void save(String data);
//获取数据
public String get();
}
/**
* @Description:内存条接口
*/
public interface Memory {
public void save();
}
package principles.dependTrans.after;
public class Computer {
// 声明抽象接口
private HardDisk hardDisk;
private Cpu cpu;
private Memory memory;
//提供get 和 set 方法
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 run(){
System.out.println("运行计算机。");
//首先从硬盘获取数据
String data = hardDisk.get();
System.out.println("从硬盘上获取的数据是:" + data);
//然后运行cpu
cpu.run();
//最后调用内存保存数据
memory.save();
}
}
public class ComputerTest {
public static void main(String[] args) {
//创建计算机的组件对象 - > new的不应该是接口,因该是子实现类对象
HardDisk myhardDisk = new XiJieHardDisk();
Cpu cpu = new IntelCpu();
Memory memory = new KingstonMemory();
//创建计算机对象
Computer c = new Computer();
//组装计算机
c.setHardDisk(myhardDisk);
c.setCpu(cpu);
c.setMemory(memory);
//运行计算机
c.run();
}
}
package principles.dependTrans.after;
public class AileenHardDisk implements HardDisk{
public void save(String data){
System.out.println("使用Aileen银盘存储数据"+ data);
}
public String get(){
System.out.println("使用Aileen硬盘获取数据");
return "Aileendata";
}
}
package principles.dependTrans.after;
public class AileenCpu implements Cpu{
public void run(){
System.out.println("使用Aileen处理器");
}
}
package principles.dependTrans.after;
public class AileenMemory implements Memory{
@Override
public void save() {
System.out.println("使用Aileen内存");
}
}
package principles.dependTrans.after;
public class ComputerTest {
public static void main(String[] args) {
//创建计算机的组件对象 - > new的不应该是接口,因该是子实现类对象
HardDisk aileenhardDisk = new AileenHardDisk();
Cpu aileencpu = new AileenCpu();
Memory aileenmemory = new AileenMemory();
//创建计算机对象
Computer c = new Computer();
//组装计算机
c.setHardDisk(aileenhardDisk);
c.setCpu(aileencpu);
c.setMemory(aileenmemory);
//运行计算机
c.run();
}
}
通过接口,我们可以实现不同的电脑配件进行电脑的组装,回到依赖倒转原则的概念,也就是说,高层模块Computer不依赖于底层模块即具体的配件类,而是使这两个模块都依赖于其对应的抽象接口;这些抽象接口都没有具体的实现方法,需要我们自己去创建类去实现这些抽象接口,然后通过这些具体类去实现对应的操作。