设计模式实践-工厂模式
场景
没种仪表工厂都实现了生产仪表的接口,不同的工厂生产不同仪表
实现代码
仪表接口:
namespace DesignPatterns.FactoryBase
{
/// <summary>
/// 仪表接口
/// </summary>
public interface IMeter
{
/// <summary>
/// 显示仪表类型
/// </summary>
void ShowType();
}
}
仪表A实现:
using System;
namespace DesignPatterns.FactoryBase
{
/// <summary>
/// 仪表类型A
/// </summary>
internal class MeterA : IMeter
{
/// <summary>
/// 显示仪表类型
/// </summary>
public void ShowType()
{
Console.WriteLine("Type A");
}
}
}
仪表B实现:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignPatterns.FactoryBase
{
/// <summary>
/// 仪表类型B
/// </summary>
internal class MeterB : IMeter
{
/// <summary>
/// 显示仪表类型
/// </summary>
public void ShowType()
{
Console.WriteLine("Type B");
}
}
}
工厂接口:
using DesignPatterns.FactoryBase;
namespace DesignPatterns.Factory
{
/// <summary>
/// 工厂接口
/// </summary>
public interface IMeterFactory
{
/// <summary>
/// 生产仪表
/// </summary>
/// <returns>仪表类型</returns>
IMeter CreateMeter();
}
}
A工厂实现:
using DesignPatterns.FactoryBase;
namespace DesignPatterns.Factory
{
/// <summary>
/// 仪表A工厂类
/// </summary>
public class MeterAFactory : IMeterFactory
{
/// <summary>
/// 生产类型A仪表
/// </summary>
/// <returns>类型A仪表</returns>
public IMeter CreateMeter()
{
return new MeterA();
}
}
}
B工厂实现:
using DesignPatterns.FactoryBase;
namespace DesignPatterns.Factory
{
/// <summary>
/// 仪表B工厂类
/// </summary>
public class MeterBFactory : IMeterFactory
{
/// <summary>
/// 生产类型B仪表
/// </summary>
/// <returns>类型B仪表</returns>
public IMeter CreateMeter()
{
return new MeterA();
}
}
}
相关调用
IMeterFactory meterAFactory = new MeterAFactory();
IMeterFactory meterBFactory = new MeterBFactory();
var meterA = meterAFactory.CreateMeter();
var meterB = meterBFactory.CreateMeter();
meterA.ShowType();
meterB.ShowType();
Out:
Type A
Type B