|
您目前处于:Architecture
2015-08-18
|
系列文章:定义 将抽象部分与实现部分分离,使它们都可以独立的变化。 结构
示例 Implementor:定义实现接口 interface Implementor {
// 实现抽象部分需要的某些具体功能
public void operationImpl();
}Abstraction:定义抽象接口 abstract class Abstraction {
// 持有一个 Implementor 对象,形成聚合关系
protected Implementor impl;
public Abstraction(Implementor impl) {
this.impl = impl;
}
// 可能需要转调实现部分的具体实现
public void operation() {
impl.operationImpl();
}
}ConcreteImplementor:实现 Implementor 中定义的接口 class ConcreteImplementorA implements Implementor {
@Override
public void operationImpl() {
// 真正的实现
System.out.println("具体的实现A");
}
}
class ConcreteImplementorB implements Implementor {
@Override
public void operationImpl() {
// 真正的实现
System.out.println("具体的实现B");
}
}RefinedAbstraction:扩展 Abstraction 类 class RefinedAbstraction extends Abstraction {
public RefinedAbstraction(Implementor impl) {
super(impl);
}
public void otherOperation() {
// 实现一定的功能,可能会使用具体实现部分的实现方法,
// 但是本方法更大的可能是使用 Abstraction 中定义的方法
// 通过组合使用 Abstraction 中定义的方法来完成更多的功能。
}
}测试代码 public class BridgePattern {
public static void main(String[] args) {
Implementor impl = new ConcreteImplementorA();
RefinedAbstraction abs = new RefinedAbstraction(impl);
abs.operation();
abs.otherOpertaion();
}
}样例
实现部分定义接口 interface MessageImplementor {
// 发送消息
public void send(String message);
}抽象部分定义接口 public abstract class AbstractMessage {
// 持有一个实现部分的对象
protected MessageImplementor impl;
// 构造方法,传入实现部分的对象
public AbstractMessage(MessageImplementor impl) {
this.impl = impl;
}
// 发送消息,转调实现部分的方法
public void sendMessage(String message) {
this.impl.send(message);
}
}具体的实现发送消息 public class MessageSMS implements MessageImplementor {
public void send(String message) {
System.out.prinlt("使用短信方式发送消息:" + message);
}
}
public class MessageEmail implements MessageImplementor {
public void send(String message) {
System.out.println("使用Email方法发送消息:" + message);
}
}抽象的消息消息 public class CommonMessage extends AbstractMessage {
public CommonMessage(MessageImplementor impl) {
super(impl);
}
public void sendMessage(Stirng message) {
super.sendMessage(message);
}
}
public class UrgencyMessage extends AbstractMessage {
public UrgencyMessage (MessageImplementor impl) {
super(impl);
}
public void sendMessage(Stirng message) {
super.sendMessage(message);
}
}
转载请并标注: “本文转载自 linkedkeeper.com ” ©著作权归作者所有 |