博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向接口编程 --对象的三种依赖
阅读量:4695 次
发布时间:2019-06-09

本文共 2424 字,大约阅读时间需要 8 分钟。

面向接口编程 --对象的三种依赖

模块间的依赖通过抽象来发生,实现类之间不应该有直接的依赖关系,依赖关系通过接口或抽象类来产生, 即面向接口编程。通过面向接口编程,当业务逻辑发生变化时,只需要修改业务场景的客户端调用类,不要修改低层的模块,降低维护成本,减少风险产生。

 

接口依赖注入:

驾驶员接口及实现类

public interface IDriver {

 public void driver(ICar car);

}

 

public class Driver  implements IDriver{

 

    @Override

    public void driver(ICar car) {

        // TODO Auto-generated method stub

        car.running();

    }

 

}

汽车接口及实现类

public interface ICar {

   public void running();

}

 

public class BMW implements ICar {

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("宝马行驶..");

    }

}

public class Benz implements ICar {

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("奔驰行驶..");

    }

 

}

场景客户端调用

public class Benz implements ICar{

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("奔驰行驶");

    }

 

}

构造器依赖注入:

驾驶员接口及实现类

public interface IDriver {

    public void drive();

}

 

public class Driver  implements IDriver{

 

    

    private ICar car;

    

    public Driver(ICar _car) {

        this.car = _car;

    }

 

    @Override

    public void drive() {

        // TODO Auto-generated method stub

        car.running();

    }

 

}

汽车接口及实现类

public interface ICar {

   public void running();

}

 

public class BMW implements ICar {

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("宝马行驶..");

    }

}

public class Benz implements ICar {

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("奔驰行驶..");

    }

 

}

场景客户端调用

public class Client {

    public static void main(String[] args) {

        IDriver driver = new Driver(new Benz());

        driver.drive();

    }

}

 

Setter依赖注入:

驾驶员接口及实现类

public interface IDriver {

    public void drive();

    public void setCar(ICar car);

}

 

public class Driver implements IDriver {

 

    private ICar car;

 

    @Override

    public void drive() {

        // TODO Auto-generated method stub

        car.running();

    }

 

    public ICar getCar() {

        return car;

    }

 

    public void setCar(ICar _car) {

        this.car = _car;

    }

 

}

汽车接口及实现类

public interface ICar {

   public void running();

}

 

public class BMW implements ICar {

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("宝马行驶..");

    }

}

public class Benz implements ICar {

 

    @Override

    public void running() {

        // TODO Auto-generated method stub

        System.out.println("奔驰行驶..");

    }

 

}

场景客户端调用

public class Client {

    public static void main(String[] args) {

 

        IDriver driver = new Driver();

        driver.setCar(new Benz());

        driver.drive();

    }

}

转载于:https://www.cnblogs.com/shawnblogs/p/4816499.html

你可能感兴趣的文章
使用点符号代替溢出的文本
查看>>
Axios 中文说明
查看>>
fatal: remote origin already exists.
查看>>
gridview 自定义value值
查看>>
2018二月实现计划成果及其三月规划
查看>>
类名.class和getClass()区别
查看>>
12/17面试题
查看>>
LeetCode 242. Valid Anagram
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
团队项目(第五周)
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>
Building Tablet PC Applications ROB JARRETT
查看>>
Adobe® Reader®.插件开发
查看>>