工厂模式:
首先来看简单工厂模式:
原理:用工厂方法代替new操作的一种模式。工厂方法封装了多个相关联类的new方法,每次实例化这些类的时候不需要new多次,只需要调用工厂类的对应方法即可实例化这些类。
工厂模式心法:
具体产品类:将需要创建的各种不同产品对象的相关代码封装到具体产品类中
抽象产品类:将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中
工厂类: 提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方法,
该方法可以根据所传入参数的不同创建不同的具体产品对象
客户端: 只需调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象
上代码:基于苹果和橘子的生产方式
生产的接口、还可以进行定义回收的接口
//==========================
// - FileName: IFactory.cs
// - Created: true.
// - CreateTime: 2020/03/02 18:32:23
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 生产接口
//==========================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public interface IFactory
{
PuodFood Create();
}
抽象出来一个类,把他理解成食物,所有的的工厂要继承自它才能生产食物、因为食物不只包含只有水果、还有其他的一些吃的。
//==========================
// - FileName: PuodFood.cs
// - Created: true.
// - CreateTime: 2020/03/02 18:36:36
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 基类(生产线)
//==========================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PuodFood
{
public PuodFood()
{
Debug.Log("生产基类");
}
}
生产苹果的一个工厂。
//==========================
// - FileName: AppleFactory.cs
// - Created: true.
// - CreateTime: 2020/03/02 18:40:36
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 苹果生产线
//==========================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AppleFactory : PuodFood
{
public AppleFactory()
{
Debug.Log("这是苹果工厂");
}
}
橘子的生产线
//==========================
// - FileName: OrangeFactory.cs
// - Created: true.
// - CreateTime: 2020/03/02 18:40:51
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 橘子生产线
//==========================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OrangeFactory : PuodFood
{
public OrangeFactory()
{
Debug.Log("这是橘子工厂");
}
}
生产苹果、橘子的具体实现、让它们都能有生产线进行生产
//==========================
// - FileName: Apple.cs
// - Created: true.
// - CreateTime: 2020/03/02 18:55:29
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 生产苹果的具体实现
//==========================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Apple : IFactory
{
public PuodFood Create()
{
return new AppleFactory();
}
}
//==========================
// - FileName: Orange.cs
// - Created: true.
// - CreateTime: 2020/03/02 18:55:34
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 生产橘子
//==========================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Orange : IFactory
{
public PuodFood Create()
{
return new OrangeFactory();
}
}
好了,以上就是简单的工厂模式的实现,如果需要更厉害的,欢迎指点。大神绕道。。。。