读书人

《Head First设计形式》阅读笔记.第七

发布时间: 2012-11-09 10:18:48 作者: rapoo

《Head First设计模式》阅读笔记.第七章
1.适配器(Adapter)模式部分

*OO适配器和真实世界的适配器扮演者同样的角色:将一个接口转换成另一个接口,以符合客户的期望。

*适配器(Adapter)类看起来很像命令(Command)模式中命令接口的实现类,只不过它不被作为参数传递。

----DuckAdapter类----public class DuckAdapter implements Turkey {    private Duck duck;        public DuckAdapter(Duck duck) {        this.duck = duck;    }        public void goggle() {        duck.quack();    }        public void fly() {        duck.fly();    }}------------


适配器模式:将一个类的接口,转换成客户希望的另一个接口。适配器让原本接口不兼容的类合作无间。

*适配器模式可以让客户从实现的接口解耦。

*适配器(Adapter)模式充满着良好的OO设计原则:使用对象组合,以修改的接口包装被适配者;这种做法还有额外的优点,那就是被适配者的任何子类都可以搭配着适配器使用。

*适配器(Adapter)分为“对象(Object)”适配器和“类(Class)”适配器两种。

*在类适配器中,适配器继承了目标(Target)和被适配者(Adaptee);而对象适配器中,适配器利用组合的方式将请求传送给被适配者。

*类适配器是基于多重继承实现的,因为Java不支持多重继承,因此无法做到。

*由于类适配器使用了继承的方式,所以它的优点是不需要整个实现被适配者,必要的时候还可以覆盖被适配者的行为。

----练习。解答----public class ArrayListEnumeration implements Enumeration {private ArrayList list;public ArrayListEnumeration(ArrayList al) {this.list = al;}public boolean hasMoreElements() {return list.iterator().hasNext();}public Object nextElement() {return list.iterator().next();}}------------


// 让所有List支持枚举public class ListEnumeration implements Enumeration {private List list;public ListEnumeration(List al) {this.list = al;}public boolean hasMoreElements() {return list.iterator().hasNext();}public Object nextElement() {return list.iterator().next();}}

5.外观(Facade)模式实例
// 车锁public class CarLock {public void lock() {System.out.println("Car is locked.");}public void unlock() {System.out.println("Car is unlock.");}}// 发动机public class Engine {public void start() {System.out.println("Engine is started.");}public void stop() {System.out.println("Engine is stopped.");}}// 汽车外观类public class CarFacade {private CarLock lock;private Engine engine;public CarFacade(CarLock lock, Engine engine) {this.lock = lock;this.engine = engine;}public void startCar() {this.lock.unlock();this.engine.start();}public void stopCar() {this.engine.stop();this.lock.lock();}}


--END--

读书人网 >软件开发

热点推荐