首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

HeadFirst 设计方式 读书笔记

2013-02-19 
HeadFirst 设计模式 读书笔记要依赖抽象,不要依赖具体类1. 抽象工厂模式 ??2. 单例模式 ? ?为什么全局变量

HeadFirst 设计模式 读书笔记
要依赖抽象,不要依赖具体类1. 抽象工厂模式 ??

2. 单例模式 ? ?为什么全局变量不能保证只有一个实例???3. HeadFirst ?设计模式 ? ?命令模式 ?P205?public class GarageDoorOpenCommand implements Command {? ? ?? ? ?GarageDoor mGarageDoor;?? ? ?public GarageDoorOpenCommand(GarageDoor aGarageDoor) {? ? ? ? ? mGarageDoor = aGarageDoor;r? ? }?? ? ?public void excute() {? ? ? ? ? mGarageDoor.up();?????}???????????}?命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。?P218 onButtonWasPushed方法的undoCommand = onCommands[slot];错了?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?应该是 undoCommand = offCommands[slot]; ??P223 ? [slot 0]应该是headfirst.command.undo.CeilingFanMediumCommand?命令模式可以让你使用不同的请求、队列,或者日志请求来参数化其他对象,命令模式也可以支持撤销操作。??4. ? 适配器模式? ? ?? ? ?public class DuckAdapter implements Turkey {? ? ? ? ? Duck mDuck;? ? ? ? ? Random mRand;? ? ??????? ? ? ? ? public DuckAdapter(Duck aDuck) {? ? ? ? ? ? ? ?mDuck = aDuck;??????????}? ? ??????? ? ? ? ? public void gooble() {? ? ? ? ? ? ? ?mDuck.quack();??????????}?? ? ? ? ? public void fly() {? ? ? ? ? ? ? ?if (rand.nextInt(5) == 0) {? ? ? ? ? ? ? ? ? ? duck.fly();???????????????}??????????}?????}?? ? ?适配器模式将一个类的接口,转换成客户期望的另一个接口。??? ? ?Client: want a Duck? ? ? Target: Duck? ? ? Adpter:TurkeyAdpter? ? ?Adaptee: Turkey?? ? ?P251 ? ?将迭代器转成枚举? ? ? ? ? ? ? ? ? ? ??????public class IteratorEnumeration implements Enumeration {? ? ? ? ? ?Iterator iterator;?? ? ? ? ? public IteratorEnumeration(Iterator iterator) {? ? ? ? ? ? ? ?this.iterator = ?iterator;??????????} ? ??? ? ? ? ? public boolean hasMoreElements() {? ? ? ? ? ? ? ?return iterator.hasNext();??????????}?? ? ? ? ? public Object nextElement() {? ? ? ? ? ? ? ?return iterator.next();??????????}? ? ? }?5. 外观模式? ? ? 外观不只是简化了接口,也将客户从组件的子系统中解耦。? ? ? 外观和适配器可以包装许多类,但是外观的意图是简化接口,而适配器的意图是将接口转化成不同接口。

热点排行