我爱Aspx >> C#.Net >> .NET下的设计模式研究之桥接模式另外考虑到不同平台的日志记录,对于操作数据库、写入文本文件所调用的方式可能是不一样的,为此对于不同的日志记录方式,我们需要提供各种不同平台上的实现,对上面的类做进一步的设计得到了下面的结构图:

图5
实现代码如下:
| public class NDatabaseLog : DatabaseLog{ public override void Write(string log) { //......(.NET平台)Log Database }}public class JDatabaseLog : DatabaseLog{ public override void Write(string log) { //......(Java平台)Log Database }}public class NTextFileLog : TextFileLog{ public override void Write(string log) { //......(.NET平台)Log Text File }}public class JTextFileLog : TextFileLog{ public override void Write(string log) { //......(Java平台)Log TextFile }} |
现在的这种设计方案本身是没有任何错误的,假如现在我们要引入一种新的xml文件的记录方式,则上面的类结构图会变成:

图6
如图中蓝色的部分所示,我们新增加了一个继承于Log基类的子类,而没有修改其它的子类,这样也符合了开放-封闭原则。如果我们引入一种新的平台,比如说我们现在开发的日志记录工具还需要支持Borland平台,此时该类结构又变成了:

图7
同样我们没有修改任何的东西,只是增加了两个继承于DatabaseLog和TextFileLog的子类,这也符合了开放-封闭原则。
Ҷƪл˵?
ASP.NET 2.0服务器控件开发之简单..[03-16]
ASP.NET 2.0移动开发之列表控件[03-16]
ASP.NET移动开发之SelectionList..[03-16]
ASP.NET 2.0中保证应用程序的安全[03-16]
ASP.NET1.0/2.0里用DIV层元素弹出..[03-16]
扩展ASP.NET 2.0内置GridView控件..[03-16]
ASP.NET中上传文件到数据库[03-16]
用ASP.NET2.0在数据库中存储二进..[03-16]
ASP.NET2.0的multiview和wizard控..[03-16]
ASP.NET 2.0高级数据处理之数据绑..[03-16]
VS2005+Crystal Report开发Web应..[03-17]
ASP.NET 2.0服务器控件开发之简单..[03-16]
实例解析C++/CLI之开卷有益[03-16]
“不完美”的VS 2005 Team Syste..[03-16]
ASP.NET 2.0移动开发之列表控件[03-16]
ASP.NET移动开发之SelectionList..[03-16]
ASP.NET 2.0中保证应用程序的安全[03-16]
病毒及流氓软件自我复制的简单实..[03-16]
ASP.NET1.0/2.0里用DIV层元素弹出..[03-16]
扩展ASP.NET 2.0内置GridView控件..[03-16]