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

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

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

 ICal
{
 void Cal();
}
public class Add:ICal
{
 
public void Cal(){};
}
public class Sub:ICal
{
public void Cal(){};
}
《大话设计模式》笔记2

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

 CreateInstance
{
 public ICal CreateInstance(string opString)
 {
  
switch(opString)
  {
   
case"+":
   {
    
return new Add();
   }
   
case"-":
   {
    
return new Sub();
   }
   《大话设计模式》笔记2
  }
 }
}

工厂模式就是为了解决其实例化的问题产生的,因为上面的实例化违反了开闭原则,随着需求的增加要不停的增加判断

分支。所以工厂模式就增加了工厂类,这样可以同一类的实例化,同时也对客户端进行统一调用。代码如下:

 Factory
{
 ICal CreateInstance();
}
public class FactoryAdd:Factory
{
 
public ICal CreateInstance()
 {
 
return new Add();
 }
}
public class FacotrySub:Factory
{
 
public ICal CreateInstance()
 {
  
return new Sub();
 }
}

public Class Client()
{
 ICal
=FacotryAdd.CreateStance();//实例化
 ICal.Do();//调用方法
}

 这样就实现了对简单工厂的实例化问题的解决。

8.原型模型:主要是通过对于已有对象进行复制,封闭复制细节。.net中主要通过实现System.ICloneable对实例进行的复制,相关技术也就深拷贝和浅拷贝了,用的很少。