系统架构技能之设计模式—装饰模式

  一、上篇回顾

  通过上篇的简单描述,我们知道了桥接模式主要是为了解决,一个对象的多个维度的变化因素的变化太快,难以控制的问题,我们通过将每个维度的变化因素进行抽象, 然后我们的对象只要依赖于抽象即可,具体的实现调用我们不关心,通过对象组合的方式,我们就能组合出我们想要的对象。无疑这是一种非常灵活的也是满足设计模式的原则的,抽象和实现分离,使他们各自发生变化都不受对方的影响。而且我们也讲述了,使用桥接模式的几个典型的场景,现在我们的实际项目中就有这样的问题,我也是在项目的使用过程中加深对桥接模式的理解的,桥接模式为系统在多个维度的变化的适应性方面提供了很好的参考,特别适合底层框架的开发过程中使用,可以适应不同变化因素的改变。上篇桥接模式放出后,我也得到了不少朋友的反馈,很感谢大家,这里特别的感谢一个名叫“萧萧”的朋友,他指出了我在文章中给出的例子有些不妥之处,我本篇将会对上篇中给出的例子,从给出符合桥接模式的实现,这里对大家say sorry !

上篇中的实现:
public interface IORM
{
ISave Save
{
get;
set;
}

IDelete Delete
{
get;
set;
}

ICreate Create
{
get;
set;
}

ICache Cache
{
get;
set;
}

IQuery Query
{
get;
set;
}

void Test();

}
我们在这个接口的定义中并没有体现桥接模式中的变化因素的抽象的概念,我们修改为如下形式:
public interface IORM
{
ISave Save
{
get;
set;
}

IDelete Delete
{
get;
set;
}

ICreate Create
{
get;
set;
}

void Test();

}
public interface ICache
{
object Cache(object o);
}

public interface IQuery
{
object Query(string condition);
}
具体的缓存服务与查询服务的实现:
public class Cache : ICache
{
public object Cache(object o){
return o;
}
}
public class Query: IQuery
{
public object Query(string condition){
return GetList(condition);
}
}
具体的ORM实现代码如下:
public class ORM : IORM
{

private IQuery query=new Query();

private ICache cache=new Cache();

public ORM(IQuery query,ICache cache)

{

this.query=query;

this.cache=cache;

}
public ISave Save
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}

public IDelete Delete
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}

public ICreate Create
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}

public void Test()
{
///测试缓存对象!
this.cache.Cache(new object());
}
}

it知识库系统架构技能之设计模式—装饰模式,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。