您的位置:首页 > 编程语言 > C语言/C++

C++设计模式之 简单工厂模式讲解(历史上最简单明白的例子)

2012-12-11 17:19 609 查看
工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友,

一看马上就知道是什么回事了。

简单工厂模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返的类都有一个共同的你类和共同的方法,

但每个方法执行的任务不同,而且根据不同的数据进行了优化。

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。



下面进行一个代码示例:

public class getName

{

private string _fName, _lName;

public string fName { get; set; }

public string lName { get; set; }

}

定义一个类,返回带有空格在名字中间的人的姓与名

public class fristName : getName

{

public fristName(string name)

{

int i=name.Trim().IndexOf(' ');

if (i > 0)

{

fName = name.Substring(0, i).Trim();

lName = name.Substring(i + 1).Trim();

}

else

{

fName = name;

lName = "";

}

}

}

定义一个类,返回带有逗号在名字中间的人的姓与名

public class lastName : getName

{

public lastName(string name)

{

int i = name.Trim().IndexOf(',');

if (i > 0)

{

lName = name.Substring(0, i).Trim();

fName = name.Substring(i + 1).Trim();

}

else

{

lName = name;

fName = "";

}

}

}

下面创建简单的工厂模式的类:

public class nameFac

{

public nameFac()

{ }

public static getName GetName(string name)

{

int i = name.IndexOf(',');

if (i > 0)

{

return new lastName(name);

}

else

{

return new fristName(name);

}

}

}

通过一个nameFac工厂类把所有的业务流程都耦合在一起。在界面层使用的时候只需代用到工厂类就可以返回结果。

getName gn = nameFac.GetName("Kelly Chen");

richTextBox1.Text = gn.fName + " , " + gn.lName;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: