超类设计中接口的使用
来源:互联网 发布:北京到普吉机票知乎 编辑:程序博客网 时间:2024/04/29 08:47
这两天看了设计模式,有点了新理解。
就拿书上的例子来说,若果要你设计一个“鸭子类”,你会怎么设计?
我相信有人会是这样设计:
1)叫的行为
2)飞行的行为(比如野生鸭子就是会飞的)
3)游泳的行为
此时,你正处于中枪中。原因:不是所有的鸭子都会飞,例如玩具鸭子,叫的行为也不只是呱呱,还有吱吱叫等。
如何解决呢?
解决:因为叫的行为和飞的行为属于动态的,即:是变化的,那么索性就将其分离出来,做成一个接口,利用多态的想法针对不同的鸭子(子类),有不同的叫(或是不叫)
例如:
public duck{
QuackInf quack;//叫接口
FlyInf fly;//飞行接口
}
当子类继承duck时,将属性quack与fly赋予不同的实现(new 相应的impl),则可得到相应的行为结果,同时使得代码的复用性得到了充分的发挥。
1:有人会问:好处不明显啊?即他会说--我就做成一个quack类和fly类,不就行了么?干什么这么麻烦?
回答:1)首先反问一个问题--当现在不只是呱呱叫和吱吱叫,又新增了一种新款鸭子的叫声例如记为A,你怎么办?
我想 你只有修改quack这个类了,同时增加if,与else的判定,当增加一个,你就在quack中增加一个else,你还需要有判断依据。这是一种不可取的方法。
2)针对这个问题,要是使用接口的情况,则简单了,你只需要增加一种相应(A)的实现,而调用者并不关心具体的实现,而是利用多态来实现,显的更为方便。
- 超类设计中接口的使用
- java web设计中 使用接口的好处
- Android中通过反射使用超类的私有属性
- 面向对象设计中抽象类与接口的区别
- 观察者设计模式(Observable 类Observer接口的使用)
- 接口与抽象超类
- 小谈子对象中接口的设计原则
- 小谈子对象中接口的设计原则
- 小谈子对象中接口的设计原则
- Java中接口的使用
- java中接口的使用
- java中接口和抽象类及其与接口有关的设计模式
- 接口 vs 抽象类 && 接口中 public/static/final 设计的原理
- Android中接口的使用及类使用
- 类和接口的设计
- 类的接口设计原则
- 超棒的展示设计
- spring3.2 hibernate3.6 整合中 超类的使用HibernateDaoSupport
- c++ vector 基础学习
- oracle相关总结3-常用函数
- windows系统中创建线程常用哪几个函数,有什么区别?
- 白话经典算法系列之五 归并排序的实现
- 12,标准C
- 超类设计中接口的使用
- Poj 2635 Pick-up sticks (线段相交)
- hdu 4722 Good Numbers
- "const T " VS "T const " VS const 作用汇总
- WINFORM自定义皮肤制作(上)
- Spring AOP
- Windows Server 2012正式版RDS系列①
- 华为机试
- Eclipse RCP 中Site与各组件之间的关系