说明:
桥接模式进一步把一个抽象提(abstraction)的接口和实现分离开来,在这里,抽象体指的是把对象的和某种具体用途相关的属性和行为分离出来的表现形式。
从这个意义上来说,一个对象是一系列抽象体的集合,其中每一个抽象体值包含该项功能的相关属性和行为。彼此之间没有相互干扰。
其主要作用是解放抽象体的接口和实现之间的任何约束关系,这样一来,接口的改变和实现的改变就可以互相不影响地进行了。
概念:
开放/封闭原则要求一个软件模块应当做到:
a,对扩展来说是开放的---总是可以修改模块的功能或者增加新的特性
b,对修改来说是封闭的----不需要修改代码来做到这一点
实例:
应用程序的消息日志功能
代码:
实现
import java.util.*;
public interface MessageLogger {
public void logMsg(String msg);
}
import java.util.*;
public class ConsoleLogger implements MessageLogger {
public void logMsg(String msg) {
System.out.println(msg);
}
}
import java.util.*;
public class ConsoleLogger implements MessageLogger {
public void logMsg(String msg) {
System.out.println(msg);
}
}
接口:
import java.util.*;
public interface Message {
public void log(String msg);
}
import java.util.*;
public class EncryptedMessage implements Message {
private MessageLogger logger;
public EncryptedMessage(MessageLogger l) {
logger = l;
}
public void log(String msg) {
String str = preProcess(msg);
logger.logMsg(str);
}
private String preProcess(String msg) {
msg = msg.substring(msg.length() - 1) +
msg.substring(0, msg.length() - 1);
return msg;
};
}
import java.util.*;
public class TextMessage implements Message {
private MessageLogger logger;
public TextMessage(MessageLogger l) {
logger = l;
}
public void log(String msg) {
String str = preProcess(msg);
logger.logMsg(str);
}
private String preProcess(String msg) {
return msg;
};
}