面试题-Java设计模式举例
面试题-Java设计模式举例
1、适配器模式
涉及三个角色:Target目标接口、Adaptee源角色、Adapter适配器;Adapter将源接口适配到目标接口,继承源接口,实现目标接口。
Java I/O操作中很多这样的例子:
InputStreamReader 将 InputStream 适配到 Reader;需要继承InputStream实现Reader。
OutputStreamWriter 将 OutputStream 适配到 Writer;
StringReader 将 String 类适配到 Reader;
2、装饰器模式
涉及到三个角色:Component抽象组件角色、ConcreteComponent实现抽象组件的所有功能、Decorator装饰器角色,它持有一个Component对象实例的引用,定义一个与抽象组件一致的接口、ConcreteDecorator具体的装饰器实现者。
Java I/O中的装饰器模式:FilterInputStream类;
注:适配器与装饰器模式都属于包装模式,他们看似都是起到包装一个类或者对象的引用,但是使用他们的目的不一样;适配器模式的意义是通过改变接口来达到重复使用的目的,装饰器模式是保持原有接口,增强原有对象的功能。