《大话设计模式》笔记2

个人觉得设计模式只是一种设计方式的总结,正如大多数人说的用了不一定就程序很好。好的程序是有标准的:功能性,稳定性,效率性,可维护和可扩展性,以及可读性。把简单的功能写的复杂人人都会,复杂的功能用简单的代码描述出来,却不是个个都行。所以设计模式为我们提供了一种方式和一种标杆。
 6.代理模式:书中描述是代理类实现与被代理的类相同的接口,代理类通过合成被代理类,就实现被代理的类的功能,有点象装饰模式,只是装饰强调对原有功能的扩展,而代理强调了隐蔽功能。
Code

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.工厂模式:讲到工厂模式就得先介绍简单工厂模式,他们应该是算一个系列吧。简单工厂是通过继承同一接口而实现不同对象,例如:
Code
interface ICal
{
 
void Cal();
}
public class Add:ICal
{
 
public void Cal(){};
}
public class Sub:ICal
{
public void Cal(){};
}
而其实例化需要通过判断语句实现。
Code
public class CreateInstance
{
 
public ICal CreateInstance(string opString)
 {
  
switch(opString)
  {
   
case"+":
   {
    
return new Add();
   }
   
case"-":
   {
    
return new Sub();
   }
   
  }
 }
}
工厂模式就是为了解决其实例化的问题产生的,因为上面的实例化违反了开闭原则,随着需求的增加要不停的增加判断
分支。所以工厂模式就增加了工厂类,这样可以同一类的实例化,同时也对客户端进行统一调用。代码如下:
Code
interface 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();//调用方法
}
 这样就实现了对简单工厂的实例化问题的解决。

你可能感兴趣的:(职场,休闲)