工厂模式(Factory)
- 什么是工厂模式/工厂模式有什么用?
官方的说法是:
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。——菜鸟教程
通俗的说,工厂模式就是一种创建对象的模式。
它是为了让程序有一个更好地封装,降低程序模块之间的耦合程度。
这个模式的例子太多 我就不列举了,总之所有的生产对象的功能,基本都是用工厂模式制作的
- 工厂模式的核心写法/如何写一个工厂模式?
namespace Ice
{
namespace 设计模式
{
namespace Factory
{
public class Leifeng雷锋//雷锋父类
{
public virtual void Saodi扫地()
{
Debug.Log("扫地");
}
public virtual void Maimi买米()
{
Debug.Log("买米");
}
public virtual void Xiyi洗衣()
{
Debug.Log("洗衣");
}
}
public class Erb二逼 : Leifeng雷锋
{
public override void Maimi买米()
{
Debug.Log("把买来的米扔掉了");
}
public override void Saodi扫地()
{
Debug.Log("扫把撅折了");
}
public override void Xiyi洗衣()
{
Debug.Log("把墨水错当成洗衣液");
}
}
public class Xueleifengdedaxuesheng学雷锋的大学生 : Leifeng雷锋
{
}
public class Shequzhiyuanzhe社区志愿者 : Leifeng雷锋
{
}
1、写一个抽象的工厂
interface IFactory接口b工厂
{
Leifeng雷锋 CreateLeifeng创建雷锋();
}
2、写一些继承抽象工厂的工厂类——部分题材来自《大话设计模式》
public class Xueleifengdedaxueshenggongchang学雷锋的大学生工厂 : IFactory接口b工厂
{
public Leifeng雷锋 CreateLeifeng创建雷锋()
{
return new Xueleifengdedaxuesheng学雷锋的大学生();
}
}
public class Shequzhiyuanzhegongchang社区志愿者工厂 : IFactory接口b工厂
{
public Leifeng雷锋 CreateLeifeng创建雷锋()
{
return new Shequzhiyuanzhe社区志愿者();
}
}
public class Erbgongchang二逼工厂 : IFactory接口b工厂
{
public Leifeng雷锋 CreateLeifeng创建雷锋()
{
return new Erb二逼();
}
}
3、使用工厂创建人物
void Start () {
Xueleifengdedaxueshenggongchang学雷锋的大学生工厂 xLFDDXSGC学雷锋的大学生工厂 = new Xueleifengdedaxueshenggongchang学雷锋的大学生工厂();
Shequzhiyuanzhegongchang社区志愿者工厂 sQZYZGC社区志愿者工厂 = new Shequzhiyuanzhegongchang社区志愿者工厂();
Erbgongchang二逼工厂 eBGC二逼工厂 = new Erbgongchang二逼工厂();
xLFDDXSGC学雷锋的大学生工厂.CreateLeifeng创建雷锋().Saodi扫地();
eBGC二逼工厂.CreateLeifeng创建雷锋().Maimi买米();
sQZYZGC社区志愿者工厂.CreateLeifeng创建雷锋().Xiyi洗衣();
}