Welcome

首页 / 软件开发 / 数据结构与算法 / 《大话设计模式》笔记2

《大话设计模式》笔记22010-01-03 博客园 林海雪原个人觉得设计模式只是一种设计方式的总结,正如大多数人说的用了不一定就程序很好。好的程序是 有标准的:功能性,稳定性,效率性,可维护和可扩展性,以及可读性。把简单的功能写的复杂人人都 会,复杂的功能用简单的代码描述出来,却不是个个都行。所以设计模式为我们提供了一种方式和一种 标杆。

6.代理模式:书中描述是代理类实现与被代理的类相同的接口,代理类通过合成被代理类,就实现被 代理的类的功能,有点象装饰模式,只是装饰强调对原有功能的扩展,而代理强调了隐蔽功能。

interface ISubject
{
void Do();
}
public Class RealSubject:ISubject
{
void Do();
}
public Class Proxy:ISubject
{
private RealSubject realSubject;
public void Do
{
if (realSubject==null)
{
realSubject=new RealSubject();
}
realSubject.Do();
}
}
static void Main(string [] args)
{
Proxy proxy=new Proxy();
proxy.Do();
}

这个让我联想到多层架构中的IDAL,BLL,DALFactory三层,DALFactory实现IDAL定义的接口,而BLL间 接实现了IDAL接口中的功能,提供给表现层使用,同时BLL也扩展了其它功能,是不是有点代理的味道。 我觉得大多数人看到代理模式就会想到WebService中的代理类的用途。我觉得它可以用在业务类软件中 ,用来对业务算法进行封闭,然后把算法集中放在一个远程可管理的服务器上。这样不会被使用者或者 故意破坏者得知其中的业务细节。

7.工厂模式:讲到工厂模式就得先介绍简单工厂模式,他们应该是算一个系列吧。简单工厂是通过继 承同一接口而实现不同对象,例如:

interface ICal
{
void Cal();
}
public class Add:ICal
{
public void Cal(){};
}
public class Sub:ICal
{
public void Cal() {};
}

而其实例化需要通过判断语句实现。

public class CreateInstance
{
public ICal CreateInstance(string opString)
{
switch(opString)
{
case"+":
{
return new Add();
}
case"-":
{
return new Sub();
}

}
}
}