播客 > 设计模式  >  工厂模式 c# php java .net  | 登录  | RSS订阅地址  | Code平台

工厂模式 c# php java .net

  这个设计模式栏目开了好久了,一直想写点东西的,但是由于时间和能力原因,久久没有写什么,现在我打算开始再写些东西,由浅到深,由理论到实践,主要的知识点为设计模式,类继承,多态,接口,耦合,解耦,反射,配置等相关的设计模式。主要的语言是C#,PHP,Java.
  首先介绍的是工厂模式,简单通俗的理解为对于不同的工厂,走的是一个流程,对用户来说,只需要知道所有的工厂怎么联系,就可以了,使用通用的流程执行不通用的内部操作。
  看看C#的代码(C# 工厂模式):
  
using System;
public interface IDbFactroy{ 
    void GetMyName();
    void Query(string sSqlString);


这是一个接口,有两个方法,可以理解成操作数据层的,我们实现一个例类:
public class XmlFile:IDbFactroy{ 
    public void GetMyName(){ 
        Console.WriteLine("执行名称:XmlFile"); 
    }
    public void Query(string sSqlString){ 
        Console.WriteLine("XmlFile 执行{0}语句",sSqlString); 
    } 


public class Access:IDbFactroy{ 
    public void GetMyName(){ 
        Console.WriteLine("执行名称:Access"); 
    } 
    public void Query(string sSqlString){ 
        Console.WriteLine("Access 执行{0}语句",sSqlString); 
    } 
}


这里实现的两个类都实现了IDbFactroy接口,都是先了IDbFactroy的方法,对于两个方法的内部,可能的操作都不一样,但工厂模式完全不关心。
例子:

public class ConsoleTest{
    public static void Main(string[] args){
        Console.WriteLine("开始执行工厂模式"); 
        string sSqled="select * from mydb";
        IDbFactroy idb=null;

        idb=new Access();
        idb.GetMyName();
        idb.Query(sSqled);

        idb=new XmlFile();
        idb.GetMyName();
        idb.Query(sSqled);

        Console.ReadLine();
    }


输出: 
开始执行工厂模式
执行名称:Access
Access 执行select * from mydb语句
执行名称:XmlFile
XmlFile 执行select * from mydb语句



  看看PHP的代码(PHP 工厂模式):

<?php

interface IDbFactroy{
    function GetMyName();
    function Query($sSqlString);
}
class XmlFile implements  IDbFactroy{ 
    public function GetMyName(){ 
        echo("执行名称:XmlFile"); 
    }
    public function Query($sSqlString){ 
        printf("XmlFile 执行{0}语句",$sSqlString); 
    } 


class Access implements IDbFactroy{ 
    public function GetMyName(){ 
        echo("执行名称:Access"); 
    } 
    public function Query($sSqlString){ 
        printf("Access 执行{0}语句",$sSqlString); 
    } 
}
$DbActor = new XmlFile();
$DbActor->GetMyName();
$DbActor = new Access();
$DbActor->GetMyName();
?>


输出:
执行名称:XmlFile执行名称:Access




  看看JAVA的代码实现(JAVA 工厂模式):
class consoletest{
    public static void main(String args[]){
        System.out.println("开始执行工厂模式"); 
        String sSqled="select * from mydb";
        IDbFactroy idb=null;

        idb=new Access();
        idb.GetMyName();
        idb.Query(sSqled);

        idb=new XmlFile();
        idb.GetMyName();
        idb.Query(sSqled);

    }
}
interface IDbFactroy{ 
    void GetMyName();
    void Query(String sSqlString);


class XmlFile implements   IDbFactroy{ 
    public void GetMyName(){ 
       System.out.println("执行名称:XmlFile"); 
    }
    public void Query(String sSqlString){ 
        System.out.println("XmlFile 执行"  + sSqlString + "语句"); 
    } 


class Access implements   IDbFactroy{ 
    public void GetMyName(){ 
       System.out.println("执行名称:Access"); 
    } 
    public void Query(String sSqlString){ 
        System.out.println("Access 执行"  + sSqlString + "语句");
    } 
}


输出的结果是:
 开始执行工厂模式
执行名称:Access
Access 执行select * from mydb语句
执行名称:XmlFile
XmlFile 执行select * from mydb语句


以上关于c#,php,和Java的程序关于工厂模式的范例实现完毕,如有任何问题,回复即可。

-----------

1:今晚要把我这个blog的索引重新做一下,现在有一些问题...NND
2:许文的ASPXUEXI现在睡觉了,新网报案了?
3:L肥了!!!
4:有个可恶的party,我真不想参加啊.
5:DS的某个程序块完成.

-------------
1-4完成,修改的地方是(我的站内搜索),主要是更新索引的。哈
天气:大雨,ccdot发表于2007-12-7 12:22:33,阅读了1335次,共有个2回复.

报案没啥用。
他们说“工程师”把一部分ip封禁了。
少部分地方还是可以访问的。我这里就不行。nnd。

niceidea post in 2007-12-10 0:11:09 #1  

我这里还是可以访问的,看来我不属于那一小撮势力了。

ccdot post in 2007-12-10 0:38:41 #2  
  1. 想要转载我文章的人滚远远的,能想多远,就滚多远。
  2. 不要提交任何带有网址URL信息的评论.
  3. 需要更多信息?请使用站内搜索,郁闷了?听听我在听什么吧!
用户名:*验证:看不清楚请点击刷新验证码*
内容: