适用条件:通过继承,添加新功能时出现大量的不能复用的代码
效果:提高代码的复用性
总结:增加了代码的复用性
实例代码:
// 使用流
普通方案:加密重复使用--但是都一样
public abstruct class Stream{
public abstruct void Read();
public abstruct void Seek();
public abstruct void Write();
}
public class FileStream : Stream{
public override void Read(){
//如果要加密
}
public override void Seek(){
// 如果要加密
}
public override void Write(){
如果要加密
}
}
public class NetStream : Stream{
public override void Read(){
//如果要加密
}
public override void Seek(){
// 如果要加密
}
public override void Write(){
/ /如果要加密
}
}
装饰模式方案
public abstruct class Stream{
public abstruct void Read();
public abstruct void Seek();
public abstruct void Write();
}
public abstruct class SubStream : Stream{
protect Stream stream;
public SubStream (Stream _s) {stream = _s}
}
public class FileStream : SubStream{
//继承的东西
}
public class NetStream : SubStraem{
//继承的东西
}
//encryption : 加密
public class EncryptionStream: SubStream{
public override encryption() : base(Stream _s)
public void Read(){
//加密
stream.Read();
}
public void Seek(){
//加密
stream.Seek();
}
public void Write(){
//加密
stream.Write();
}
}
使用时:
Stream s1 = new FileStream();
Stream s2 = new NetStream();
Stream s3 = new EncryptionStream(s1); // 文件加密流 -- 传参
Stream s3 = new EncryptionStream(s2); // 网络加密流 -- 传参