设计模式 - Factory 模式

1 问题

    1 为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共 接口以形成抽象基类或者接口。
    2 父类中并不知道具体要实例化哪一个具体的子类。

2 功能

    1 定义创建对象的接口,封装了对象的创建;
    2 使得具体化类的工作延迟到了子类中。

3 代码
不用关心MonoBehaviout,只是在unity引擎的脚本验证的该模式,Start()方法可以看做main()函数

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public enum ProductType{
    A,
    B
}

public abstract class Product{
    public ProductType type;
    public int id;

    public abstract void OnUsed();
}

public class ConcreteProductA : Product{

    public ConcreteProductA(){
        type = ProductType.A;
    }

    public override void OnUsed ()
    {
        Debug.Log("..A Is On Useing");
    }
}

public class ConcreteProductB : Product{

    public ConcreteProductB(){
        type = ProductType.B;   
    }

    public override void OnUsed ()
    {
        Debug.Log("..B Is On Useing");
    }

    public void OnCustomFunction(){
        Debug.Log("..B : this is my special function");
    }
}

public interface Factory{

    Product OnCreate(ProductType type);
}

public class ConcreteFactory : Factory{

    public Product OnCreate(ProductType type){
        switch(type){
        case ProductType.A:
            return new ConcreteProductA();
            break;
        case ProductType.B:
            return new ConcreteProductB();
            break;
        default:
            return null;
            break;
        }
    }
}

public class FactoryDemo : MonoBehaviour {

    void Awake(){
        Factory factory = new ConcreteFactory();
        Product product = factory.OnCreate(ProductType.B);
        product.OnUsed();

//      Factory factory = new ConcreteFactory();
//      Product product = factory.OnCreate(ProductType.B);
//      ((ConcreteProductB)product).OnCustomFunction();
    }
}

4 总结
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值