要依赖抽象,不要依赖具体类
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. 外观模式
外观不只是简化了接口,也将客户从组件的子系统中解耦。
外观和适配器可以包装许多类,但是外观的意图是简化接口,而适配器的意图是将接口转化成不同接口。