读书笔记1:简单工厂模式

工厂模式,这几乎是最常见的了,当年在学校的时候,老师讲了n多设计模式,只有这个至今还能想起来的。工作中我用过两个地方,一是数据库的连接,二是和书上的收银台的例子一样的那种。

1、连接数据库,以access为例。这种最常见所以记得很清。

[csharp]  view plain copy print ?
  1. public class DAOFactory  
  2.  {  
  3.      static OleDbConnection conn;  
  4.      private DAOFactory() { }  
  5.      public static OleDbConnection DAOFactoryConnection(string dbPath,string dbPassword)  
  6.      {  
  7.        try  
  8.          {  
  9.             string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" +  
  10.             "Persist Security Info=True;Jet OLEDB:Database Password={1}";  
  11.              connStr = string.Format(connStr, filePath, pasword);  
  12.              conn = new OleDbConnection(connStr);  
  13.          }  
  14.          catch (Exception e)  
  15.          {  
  16.              throw (e);  
  17.          }  
  18.          return conn;  
  19.      }  
  20.   
  21.      public static void ConnClose()  
  22.      {  
  23.          if (conn != null)  
  24.              conn.Close();  
  25.      }  
  26.   
  27.       public static void ConnOoen()  
  28.      {  
  29.          if (conn != null)  
  30.              conn.Open();  
  31.      }  
  32.  }  

其他一种,以前我的项目中有一个关于抓取网页的,当然不是全部抓取,只是提取指定的一些网页的内容的,类似于小说下载阅读器的那种提取小说的。是这样实现的:

工厂类PageFactory:

[csharp]  view plain copy print ?
  1. Public clas   PageFactory  
  2. {  
  3.     PageClass pclass;  
  4.     Public static PageClass CreateFactory(string type)  
  5.     {  
  6.        Switch(type)  
  7.         Case “网页类型一”:  
  8.           Pclass = new PageClass1();  
  9.           Break;  
  10.         Case “网页类型二”:  
  11.           Pclass = new PageClass2();  
  12.           Break  
  13. …  
  14.         Default:  
  15.            Break;  
  16.     }  
  17. }  
  18.   
  19. <p> </p>  

 网页类型父类:PageClass

[csharp]  view plain copy print ?
  1. Public class PageClass  
  2. {  
  3.     Public abstract 返回类型 GetPageInfo()  
  4.     {  
  5.        Return 返回类型;  
  6.     }  
  7.   
  8. }  

 网页类型一的提取类:PageClass1

[csharp]  view plain copy print ?
  1. Public class PageClass1: PageClass  
  2. {  
  3.    Public override 返回类型 GetPageInfo()  
  4.     {  
  5.       算法1;  
  6.       Return 返回类型;  
  7.     }  
  8. }  

网页类型二的提取类:PageClass2

[csharp]  view plain copy print ?
  1. Public class PageClass2: PageClass  
  2. {  
  3.    Public override 返回类型 GetPageInfo()  
  4.    {  
  5.        算法2;  
  6.        Return 返回类型;  
  7.    }  
  8. }  

等等

调用:

[csharp]  view plain copy print ?
  1. Main  
  2. {  
  3.    PageClass pclass= PageFactory. CreateFactory(type);  
  4.     返回结果= PageClass. GetPageInfo();  
  5. }  

使用工厂模式就实现了该功能,并且随着类型的不同可以很好的扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值