模式1:简单工厂模式——C#语言描述
“简单工厂模式”简单的说就是一个工厂类根据客户的需求动态的提供生成客户需要的产品对象,用户只需告诉工厂类自己希望得到什么产品,而不需要知道产品的创建细节,讲产品的生成和使用有效的分离了出来。但是“简单工厂模式”也是有限制的,就是产品需要有相同的结构,才可以实现,当让,如果产品有少许接口不一样,我们也可以通过技巧来实现。
那么“简单工厂模式”是如何实现的,让我们看看下面的讲解吧。
首先,“简单工厂模式”中必须有一个工厂类负责产品的创建。还要有一个所有产品的共同接口。我们用一个实例来说明是什么样的结构。我们假设客户需要各种不同的形状,将他们画在屏幕上,而当地需要什么形状只有到系统运行时根据客户的要求才可以得到。我们用“简单工厂模式”实现上面的问题域。
![]()
Shape.cs
using System;
![]()
namespace test
{
/// <summary>
/// Sharp 的摘要说明。
/// </summary>
public interface Shape
{
void draw();
}
}
//====================================
Circle.cs
using System;
![]()
namespace test
{
/// <summary>
/// Circle 的摘要说明。
/// </summary>
public class Circle:Shape
{
public Circle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void draw()
{
Console.WriteLine("drawing a circle.");
}
}
}
//=============================
Rectangle.cs
using System;
![]()
namespace test
{
/// <summary>
/// Rectangle 的摘要说明。
/// </summary>
public class Rectangle:Shape
{
public Rectangle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void draw()
{
Console.WriteLine ("drawing a rectangle");
}
}
}
//==============================
Triangle.cs
using System;
![]()
namespace test
{
/// <summary>
/// Triangle 的摘要说明。
/// </summary>
public class Triangle:Shape
{
public Triangle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void draw()
{
Console.WriteLine ("drawing a triangle.");
}
}
}
//=============================
ShapeFactory.cs
using System;
![]()
namespace test
{
/// <summary>
/// ShapeFactory 的摘要说明。
/// </summary>
public class ShapeFactory
{
public static Shape factory(string shape)
{
if(shape.Equals ("circle"))
{
return new Circle ();
}
if(shape.Equals ("rectangle"))
{
return new Rectangle();
}
if(shape.Equals ("triangle"))
{
return new Triangle ();
}
return null;
}
}
}
//=============================
Test.cs
using System;
![]()
namespace test
{
/// <summary>
/// Test 的摘要说明。
/// </summary>
public class Test
{
public static void Main()
{
Shape s = ShapeFactory.factory ("circle");
s.draw();
}
}
}
![]()
客户只需要传递给工厂类相应的参数,工厂类就可以根据参数生成客户需要的产品,这就是“简单工厂模式”的代码,大家可以将它用到自己的代码中。
那么“简单工厂模式”是如何实现的,让我们看看下面的讲解吧。
首先,“简单工厂模式”中必须有一个工厂类负责产品的创建。还要有一个所有产品的共同接口。我们用一个实例来说明是什么样的结构。我们假设客户需要各种不同的形状,将他们画在屏幕上,而当地需要什么形状只有到系统运行时根据客户的要求才可以得到。我们用“简单工厂模式”实现上面的问题域。

Shape.cs
using System;
namespace test
{
/// <summary>
/// Sharp 的摘要说明。
/// </summary>
public interface Shape
{
void draw();
}
}
//====================================
Circle.cs
using System;
namespace test
{
/// <summary>
/// Circle 的摘要说明。
/// </summary>
public class Circle:Shape
{
public Circle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void draw()
{
Console.WriteLine("drawing a circle.");
}
}
}
//=============================
Rectangle.cs
using System;
namespace test
{
/// <summary>
/// Rectangle 的摘要说明。
/// </summary>
public class Rectangle:Shape
{
public Rectangle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void draw()
{
Console.WriteLine ("drawing a rectangle");
}
}
}
//==============================
Triangle.cs
using System;
namespace test
{
/// <summary>
/// Triangle 的摘要说明。
/// </summary>
public class Triangle:Shape
{
public Triangle()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void draw()
{
Console.WriteLine ("drawing a triangle.");
}
}
}
//=============================
ShapeFactory.cs
using System;
namespace test
{
/// <summary>
/// ShapeFactory 的摘要说明。
/// </summary>
public class ShapeFactory
{
public static Shape factory(string shape)
{
if(shape.Equals ("circle"))
{
return new Circle ();
}
if(shape.Equals ("rectangle"))
{
return new Rectangle();
}
if(shape.Equals ("triangle"))
{
return new Triangle ();
}
return null;
}
}
}
//=============================
Test.cs
using System;
namespace test
{
/// <summary>
/// Test 的摘要说明。
/// </summary>
public class Test
{
public static void Main()
{
Shape s = ShapeFactory.factory ("circle");
s.draw();
}
}
}

posted on 2005-06-13 15:32 chance_win 阅读(383) 评论(0) 收藏 举报


浙公网安备 33010602011771号