文档章节

设计模式

披荆斩棘
 披荆斩棘
发布于 2015/09/06 21:13
字数 265
阅读 4
收藏 0

使用继承导致的缺点

    1.     代码在多个子类中重复    

    2.    运行时的行为不容易改变

    3.    很难知道所有子类的全部行为

    4.    父类一旦改变所有子类都会受到牵连

    … …

 

鸭子游戏

       如何设设计?

    1.      设计Duck基类

        把静态属性放置基类中(就是鸭子共同的属性,不会发生变化的,比如嘴巴,脚… … )

    abstract class Duck

    2.    抽取出需要变化的代码

        比如动态行为(比如:如何叫,如何飞),不同的鸭子有不同的行为

interface class fly

    这样做的好处 : 

    1.      把所有不需要变化的和需要变化的分离.

        不需要变化的代码写成abstract类,需要变化的写成interface接口.            

public abstract class Duck {
       private Stirng name; // 不会变化的代码
       private FlyBehavior flyBehavior; // FlyBehavior是一个接口
       public void fly(){
              flyBehavior.fly(); // 委托给行为类
       }
       如何动态的设定行为呢?
       public void setFlyBehavior(FlyBehavior fb) {
              this. flyBehavior = fb; // 这样就可以动态的设定行为了
       }
}


© 著作权归作者所有

下一篇: Java Se 注解
披荆斩棘
粉丝 2
博文 26
码字总数 22990
作品 0
深圳
高级程序员
私信 提问

暂无文章

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部