Head First 设计模式笔记(第一章 设计模式入门)

这次看的是实体书, 中文版2007年9月第1版. 第一章p1~p35.

概述

之前看过一次这本书, 不过印象不深刻, 平时也不太会用, 这次借着和群友一起看的机会, 再复习一次. 目标是每章都有代码, 最好和工作中的实例结合起来.

Duck

Duck是经典的模型. Duck基类有2种行为, fly()quack(), 如果是直接继承, 那么所有Duck的子类都会飞, 但是橡皮鸭(橡皮鸭算不算鸭??)不会飞.

那么继承就不合适, 但是如果每个子类都自己实现一遍, 代码又没有得到复用(例如鸭子类型A和类别B的代码是一样的).

这种时候就需要抽象一个飞行行为接口FlyBehavior, 定义方法fly(), 然后定义不同的实现类FlyWithWings, FlyNoWay等. 每种鸭子看情况使用不同的实现类.

Duck中添加一个属性FlyBehavior, 可以在子类初始化时指定特定的FlyBehavior实现类. 也可以添加一个方法setFlyBehavior(FlyBehavior flyBehavior), 可以动态改变行为, 一会让鸭能飞, 一会让鸭不能飞(似乎没有用处...).

游戏中的人物战斗

这个例子适合动态改变行为.

游戏中有很多人物, 有国王, 骑士, 王后. 有很多种武器, 有斧头, 剑, 弓箭等. 人物可以佩戴不同的武器, 可以切换武器, 先拿斧头, 再换剑.

写日志的场景分析

之前用果log4net, 分析下这个场景

posted @ 2020-05-10 11:49  Panda110  阅读(154)  评论(0编辑  收藏  举报