1、接口传递
package com.weirdo.principle.inversion.improve.DependencyPass1;
public class DependencyPass1 {
public static void main(String[] args) {
ChangHong changHong = new ChangHong();
OpenAndClose openAndClose = new OpenAndClose();
openAndClose.open(changHong);
}
}
interface IOpenAndClose{
public void open(ITV itv);
}
interface ITV{
public void play();
}
class ChangHong implements ITV{
@Override
public void play() {
System.out.println("长虹电视,打开");
}
}
class OpenAndClose implements IOpenAndClose{
@Override
public void open(ITV itv) {
itv.play();
}
}
2、构造方法传递
package com.weirdo.principle.inversion.improve.DependencyPass2;
public class DependencyPass2 {
public static void main(String[] args) {
ChangHong changHong = new ChangHong();
OpenAndClose openAndClose = new OpenAndClose(changHong);
openAndClose.open(changHong);
}
}
interface IOpenAndClose{
public void open(ITV itv);
}
interface ITV{
public void play();
}
class ChangHong implements ITV {
@Override
public void play() {
System.out.println("长虹电视,打开");
}
}
class OpenAndClose implements IOpenAndClose {
public ITV itv;
public OpenAndClose(ITV itv){
this.itv=itv;
}
public void open(ITV itv) {
itv.play();
}
}
3、setter方式传递
package com.weirdo.principle.inversion.improve.DependencyPass3.DependencyPass2;
public class DependencyPass3 {
public static void main(String[] args) {
ChangHong changHong = new ChangHong();
OpenAndClose openAndClose = new OpenAndClose();
openAndClose.setTv(changHong);
openAndClose.open();
}
}
interface IOpenAndClose{
public void open();
public void setTv(ITV itv);
}
interface ITV{
public void play();
}
class ChangHong implements ITV {
@Override
public void play() {
System.out.println("长虹电视,打开");
}
}
class OpenAndClose implements IOpenAndClose {
private ITV itv;
public void setTv(ITV itv){
this.itv=itv;
}
public void open(){
itv.play();
}
}