using System;
namespace Factory
{
class Program
{
static void Main(string[] args)
{
//工厂模式,通过不同的工厂来创建对象,避免了臃肿的选择结构
//增加新的鼠标,只需要创建新的厂就行了。扩展而不是修改
//使用者需要知道:工厂,产品接口即可使用,对使用者隐藏了创建
IMouse[] myMouse = new IMouse[2];
myMouse[0] = new HPMouseFactory().CreateMouse();
myMouse[1] = new DellMouseFactory().CreateMouse();
foreach (IMouse m in myMouse) { m.SayHi(); }
}
}
//鼠标接口:鼠标必须具备的功能
public interface IMouse
{
void SayHi();
}
//工厂接口:实现接口的为合格工厂
public interface IMouseFactory
{
IMouse CreateMouse();
}
public class HPMouseFactory : IMouseFactory
{
//隐藏的鼠标实现,避免使用者直接创建
//这里应该是一个复杂对象,但使用者无须了解且不能随意创建
private class HPMouse : IMouse
{
public void SayHi()
{
Console.WriteLine("Hi! {0}", this);
}
}
public IMouse CreateMouse()
{
return new HPMouse();
}
}
public class DellMouseFactory : IMouseFactory
{
//隐藏的鼠标实现,避免使用者直接创建
private class DellMouse : IMouse
{
public void SayHi()
{
Console.WriteLine("Hi! {0}", this);
}
}
public IMouse CreateMouse()
{
return new DellMouse();
}
}
}
C#工厂模式
最新推荐文章于 2024-08-01 12:14:21 发布