• 对“针对接口编程,而不是针对实现编程”的理解
  • 应该针对接口编程 而不是针对实现编程

0. 理解

  • 接口,定义了一堆空实现函数的接口,如下,是对其全部实现类的约束,即必须实现我(接口)事先规定的那些方法,以使得我在操纵父类接口(指向子类实现)时,获得一种操作上的一致性(多态),而忽视其子类具体实现上的差异,即封装变化;

    public interface Iterator {boolean hasNext();Object next();
    }

1. 针对接口编程是多态性的体现

  • 针对对象编程简单地说,就是传递的是具体的子类;

    • 而针对接口编程,传递的则是父类引用,这样便可发挥多态性“父类引用指向子类对象”的特点和优势;

来看一个简答的例子:

public interface Animal {...public void makeSound();
}

具体到“狗”,需给出其实现:

public class Dog implements Animal {@Overridepublic void makeSound() {System.out.println("Wang! Wang!");}
}

同理可给出其他具体动物类(猪牛羊等)的叫声实现。此时如何传递动物的实例化对象,调用其叫声方法呢?

  • 针对实现编程:

    public void hearDogSound(Dog dog) {dog.makeSound();
    }

    如果需要调用牛的叫声方法:

    public void hearCowSound(Cow cow){cow.makeSound();
    }

    针对对象编程,每想调用不同子类对象的共有方法,都要去创建一个与该类相关的 hearSound() 方法,这样在 interface 中定义的共有方法便失去了意义。

  • 针对接口编程:

    public void hearSound(Animal animal) {animal.makeSound();
    }

设计原则 —— 针对接口编程而不针对实现编程相关推荐

  1. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

  2. 面向对象设计原则之接口隔离原则

    接口隔离原则定义如下: 接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口. 根 ...

  3. 七大设计原则之接口隔离原则应用

    目录 1 接口隔离原则介绍 2 接口隔离原则应用 1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接 ...

  4. 六大设计原则之接口隔离原则

    接口隔离原则定义 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don't use. 客户端不 ...

  5. 自动化测试用例设计原则(接口自动化用例设计的基本原则)

    自动化测试用例设计原则: 1.一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器. 2.一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统 3.尽量只做 ...

  6. 设计原则之接口隔离原则详解

    接口隔离原则定义 用多个专门的接口分别定义方法,而不是使用一个总的接口定义一堆方法 一个类对应一个类的依赖应该建立在最小的接口上 尽量细化接口,接口中的方法尽量少 不要建立庞大臃肿的接口类 意思就是我 ...

  7. 6大设计原则之接口隔离原则

    接口隔离原则的定义 什么是接口. 实例接口,比如定义了一个Person类,然后 Person p = new Pserson(); 产生一个实例,Person类就是 p 的接口 类接口,就是Java中 ...

  8. 七大设计原则之接口隔离原则

    一.接口隔离原则介绍 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上.初看这个定义,让人摸不着头脑,我们看一个类图,看如下图所示: 类A通过接口Interface1依赖 ...

  9. 对“针对接口编程,而不是针对实现编程”的理解

    对"针对接口编程,而不是针对实现编程"的理解 今天在阅读<Head First设计模式>的时候,看到了这句话:"针对接口编程,而不是针对实现编程", ...

最新文章

  1. .NET框架设计—常被忽视的框架设计技巧
  2. 《分布式系统:概念与设计》一1.6 实例研究:万维网
  3. ATDD验收测试驱动开发
  4. linux之scp命令
  5. LeetCode 2207. 字符串中最多数目的子字符串(前缀和)
  6. 生成 oracle 连接串,Generator连接Oracle数据库生成Model报错
  7. Catch That Cow抓住那只奶牛(BFS,广度优先搜索)
  8. 《奇点来临》——阿西莫夫三大定律
  9. 俄罗斯方块java代码_java的俄罗斯方块代码
  10. Java网络编程基础
  11. w ndows十空格键怎么按,电脑键盘空格键失灵不能用如何修复
  12. Worm.Win32.Diskgen.gen/磁碟机也捎带广告?
  13. JavaScript——模拟自动饮料机
  14. matlab中numden函数,numden函数 MATLAB里面numden函数有什么用?
  15. java具名参数_Spring jdbc具名参数使用方法详解
  16. ruoyi cloud配置启动
  17. 关于Connection aborted等问题的解决
  18. AD账号导入--dsadd user
  19. 【Datawhale跨模态实践学习笔记】项目后端学习
  20. 北京市定额发票真假查询地址

热门文章

  1. oracle两表联查分页公式,Oracle中分页查询和联表查询
  2. java map用二叉树_HashMap
  3. Mongodb入门安装
  4. knife4j--api请求参数不一致问题
  5. Hadoop 之 Distcp官网介绍和注意事项
  6. linux怎么把mysql数据库备份还原,MySQL数据库备份和还原
  7. 的ppt_PPT模板中国风PPT模板
  8. ​​​​​​​CUDA ---- Shared Memory
  9. OSG/osgEarth相关功能函数汇总
  10. BP算法:原理推导数据演示项目实战1(转)