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

来源:互联网 发布:淘宝网商贷款 编辑:程序博客网 时间:2024/06/15 02:35
     工厂模式,这几乎是最常见的了,当年在学校的时候,老师讲了n多设计模式,只有这个至今还能想起来的。工作中我用过两个地方,一是数据库的连接,二是和书上的收银台的例子一样的那种。

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

   public class DAOFactory    {        static OleDbConnection conn;        private DAOFactory() { }        public static OleDbConnection DAOFactoryConnection(string dbPath,string dbPassword)        {          try            {               string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" +               "Persist Security Info=True;Jet OLEDB:Database Password={1}";                connStr = string.Format(connStr, filePath, pasword);                conn = new OleDbConnection(connStr);            }            catch (Exception e)            {                throw (e);            }            return conn;        }        public static void ConnClose()        {            if (conn != null)                conn.Close();        }         public static void ConnOoen()        {            if (conn != null)                conn.Open();        }    }

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

工厂类PageFactory:

Public clas   PageFactory{    PageClass pclass;    Public static PageClass CreateFactory(string type)    {       Switch(type)        Case “网页类型一”:          Pclass = new PageClass1();          Break;        Case “网页类型二”:          Pclass = new PageClass2();          Break…        Default:           Break;    }}

 

 网页类型父类:PageClass

Public class PageClass{    Public abstract 返回类型 GetPageInfo()    {       Return 返回类型;    }}

 网页类型一的提取类:PageClass1

Public class PageClass1: PageClass{   Public override 返回类型 GetPageInfo()    {      算法1;      Return 返回类型;    }}

网页类型二的提取类:PageClass2

Public class PageClass2: PageClass{   Public override 返回类型 GetPageInfo()   {       算法2;       Return 返回类型;   }}

等等

调用:

Main{   PageClass pclass= PageFactory. CreateFactory(type);    返回结果= PageClass. GetPageInfo();}

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