外观模式及其改进(三):外观类的单例化
由于外观类维持了对多个子系统类的引用,外观对象在系统运行时将占用较多的系统资源,因此需要对外观对象的数量进行限制,避免系统资源的浪费。可以结合单例模式对外观类进行改进,将外观类设计为一个单例类。通过对外观模式单例化,可以确保系统中只有唯一一个访问子系统的入口,降低系统资源的消耗。单例化之后的外观模式结构如图6所示:
图6
图7
【在图7中,我采用UML衍型(Stereotype)对模式角色进行了标注,大家也可以这么标注结构图中的模式信息,挺方便的,】
[java] view plaincopy
-
public
class EncryptFacade { -
private static EncryptFacade newinstance = EncryptFacade(); -
private FileReader reader; -
private CipherMachine cipher; -
private FileWriter writer; -
-
private EncryptFacade() { -
reader = new FileReader(); -
cipher = new CipherMachine(); -
writer = new FileWriter(); -
} -
-
public void fileEncrypt(String fileNameSrc, String fileNameDes) { -
String plainStr = reader.read(fileNameSrc); -
String encryptStr = cipher.encrypt(plainStr); -
writer.write(encryptStr,fileNameDes); -
} -
-
public static EncryptFacade getInstance() { -
return instance; -
} -
}
【作者:刘伟