设计模式之桥接模式实例
2015-01-16 15:17
381 查看
桥接模式将抽象部分与实现部分分离,使他们都可以独立变化。如果一个系统有两个以上相互独立的抽象变化,就需要使用桥接模式了。为说明桥接模式的使用方法,下面使用一个例子。
假设设计一个日志系统,这个系统可以记录多种日志类型,如交易日志,数据库日志,用户操作日志等,同时,这个系统还支持多种日志的表现形式。如xml文件,文本文件,数据库库数据,E-mail等。
抽象:日志的种类。
实现:日志的表现方式。
实现代码如下:
Log源代码
LogSave源代码
TradLog源代码
DbLog源代码
UserLog源代码
XmlImpl源代码
TextImpl源代码
EmailImpl源代码
下面是启动类展示最终结果:
Client源代码
写入UserLog数据
使用xml方式存储
写入DbLog数据
使用发邮件的方式存储
(end)
假设设计一个日志系统,这个系统可以记录多种日志类型,如交易日志,数据库日志,用户操作日志等,同时,这个系统还支持多种日志的表现形式。如xml文件,文本文件,数据库库数据,E-mail等。
抽象:日志的种类。
实现:日志的表现方式。
实现代码如下:
Log源代码
public abstract class Log{ protected LogSave logSave; public Log(LogSave logSave){ this.logSave=logSave; } public abstract void writeToLog(); }
LogSave源代码
public abstract class LogSave{ public abstract void write(); }下面是三个Log的子类
TradLog源代码
public class TradLog extends Log{ public TradLog(LogSave logSave){ super(logSave); } @Override public void writeToLog(){ System.out.println("写入TradLog数据"); this.logSave.write(); } }
DbLog源代码
public class DbLog extends Log{ public DbLog(LogSave logSave){ super(logSave); } @Override public void writeToLog(){ System.out.println("写入DbLog数据"); this.logSave.write(); } }
UserLog源代码
public class UserLog extends Log{ public UserLog(LogSave logSave){ super(logSave); } @Override public void writeToLog(){ System.out.println("写入UserLog数据"); this.logSave.write(); } }下面是LogSave的三个实现类
XmlImpl源代码
public class XmlImpl extends LogSave{ @Override public void write(){ System.out.println("使用xml方式存储"); } }
TextImpl源代码
public class TextImpl extends LogSave{ @Override public void write(){ System.out.println("使用文本方式存储"); } }
EmailImpl源代码
public class EmailImpl extends LogSave{ @Override public void write(){ System.out.println("使用发邮件的方式存储"); } }实现不能和抽象发生耦合,而只能由抽象和实现发生耦合。
下面是启动类展示最终结果:
Client源代码
public class Client{ public static void main(String[] args){ Log log=new UserLog(new XmlImpl()); log.writeToLog(); Log log2=new DbLog(new EmailImpl()); log2.writeToLog(); } }运行结果如下:
写入UserLog数据
使用xml方式存储
写入DbLog数据
使用发邮件的方式存储
(end)
相关文章推荐
- 设计模式之桥接模式(Bridge)简单实例
- Net设计模式实例之桥接模式( Bridge Pattern)(1)
- 实例解析Python设计模式编程之桥接模式的运用
- 23种设计模式C++实例之桥接模式
- Java设计模式之桥接模式实例详解
- Net设计模式实例之桥接模式( Bridge Pattern)(2)
- 实例解析Python设计模式编程之桥接模式的运用
- 设计模式-----桥接模式之数据迁移实例
- 设计模式实例学习-桥接模式
- Net设计模式实例之桥接模式( Bridge Pattern)
- Net设计模式实例之桥接模式( Bridge Pattern)
- 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)
- 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)
- .Net中的设计模式——从实例谈Adapter模式
- 设计模式之桥接模式(Bridge)
- 23种经典设计模式的java实现_3_桥接模式
- 设计模式之桥接模式
- 23种设计模式及其对应实例
- 设计模式与泡mm的关系之Bridge桥接模式及桥接模式的再思考
- 设计模式之Bridge桥接设计模式