测试了下,上传到服务器保存文件名为中文或是下载服务...上传文件,使用 保存为 中文名称 时会报错!非常感谢!正在使用中。刚学C#,今天在这里看到很多不错的学习资料,谢谢!...不错,学习jmail发送邮件核心代码。nb seo...泪求破解啊,不是VIP,怨念啊 命理风水堂敬启 公告:北京易达信动Qpay公司利...你好, 我现在是这样使用的 ss 值为 ...@weiyanlover 已针对该问题做了改进,...我一直在用这个类,觉得不错,因为我在写QQ农场外挂...
C#设计模式-抽象工厂模式
编辑:dnawo 日期:2010-03-09
|
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2.UML图

3.代码
复制内容到剪贴板
程序代码
程序代码using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
AbstractProductA pa;
AbstractProductB pb;
AbstractFactory f1 = new ConcreteFactory1();
pa = f1.CreateProductA();
pb = f1.CreateProductB();
AbstractFactory f2 = new ConcreteFactory2();
pa = f2.CreateProductA();
pb = f2.CreateProductB();
Console.ReadKey();
}
}
/// <summary>
/// 抽象工厂
/// </summary>
abstract class AbstractFactory
{
public abstract AbstractProductA CreateProductA();
public abstract AbstractProductB CreateProductB();
}
/// <summary>
/// 具体工厂
/// </summary>
class ConcreteFactory1 : AbstractFactory
{
public override AbstractProductA CreateProductA()
{
Console.WriteLine("创建并返回ProductA1实例!");
return new ProductA1();
}
public override AbstractProductB CreateProductB()
{
Console.WriteLine("创建并返回ProductB1实例!");
return new ProductB1();
}
}
/// <summary>
/// 具体工厂
/// </summary>
class ConcreteFactory2 : AbstractFactory
{
public override AbstractProductA CreateProductA()
{
Console.WriteLine("创建并返回ProductA2实例!");
return new ProductA2();
}
public override AbstractProductB CreateProductB()
{
Console.WriteLine("创建并返回ProductB2实例!");
return new ProductB2();
}
}
/// <summary>
/// 抽象产品
/// </summary>
class AbstractProductA
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductA1 : AbstractProductA
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductA2 : AbstractProductA
{ }
/// <summary>
/// 抽象产品
/// </summary>
class AbstractProductB
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductB1 : AbstractProductB
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductB2 : AbstractProductB
{ }
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
AbstractProductA pa;
AbstractProductB pb;
AbstractFactory f1 = new ConcreteFactory1();
pa = f1.CreateProductA();
pb = f1.CreateProductB();
AbstractFactory f2 = new ConcreteFactory2();
pa = f2.CreateProductA();
pb = f2.CreateProductB();
Console.ReadKey();
}
}
/// <summary>
/// 抽象工厂
/// </summary>
abstract class AbstractFactory
{
public abstract AbstractProductA CreateProductA();
public abstract AbstractProductB CreateProductB();
}
/// <summary>
/// 具体工厂
/// </summary>
class ConcreteFactory1 : AbstractFactory
{
public override AbstractProductA CreateProductA()
{
Console.WriteLine("创建并返回ProductA1实例!");
return new ProductA1();
}
public override AbstractProductB CreateProductB()
{
Console.WriteLine("创建并返回ProductB1实例!");
return new ProductB1();
}
}
/// <summary>
/// 具体工厂
/// </summary>
class ConcreteFactory2 : AbstractFactory
{
public override AbstractProductA CreateProductA()
{
Console.WriteLine("创建并返回ProductA2实例!");
return new ProductA2();
}
public override AbstractProductB CreateProductB()
{
Console.WriteLine("创建并返回ProductB2实例!");
return new ProductB2();
}
}
/// <summary>
/// 抽象产品
/// </summary>
class AbstractProductA
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductA1 : AbstractProductA
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductA2 : AbstractProductA
{ }
/// <summary>
/// 抽象产品
/// </summary>
class AbstractProductB
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductB1 : AbstractProductB
{ }
/// <summary>
/// 具体产品
/// </summary>
class ProductB2 : AbstractProductB
{ }
}
评论: 0 | 引用: 0 | 查看次数: 205
发表评论
请登录后再发表评论!
上一篇
下一篇


文章来自:
Tags:
相关日志:

