这个设计模式栏目开了好久了,一直想写点东西的,但是由于时间和能力原因,久久没有写什么,现在我打算开始再写些东西,由浅到深,由理论到实践,主要的知识点为设计模式,类继承,多态,接口,耦合,解耦,反射,配置等相关的设计模式。主要的语言是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回复.