Unity Come On

Unity【话大】设计模式之简单工厂

2018-10-21  本文已影响315人  su9257_海澜

前言:笔者在最开始写程序的时候经常会遇到一种情况,例如更改一个字段、或者添加一种小功能,就要把原来写过的东西几乎废弃掉,或者更改大量以前写过的代码。又或者自己写的东西时间久了再去回顾,完全找不到到时为什么这么写的头绪,如果遇到了Bug更是无法快速定位在哪里小范围出现的问题。如果你也经常遇到这种问题,就说明你现阶段非常需要学习下设计模式了

在网上经常说的设计模式有23种,也有一些更多的设计模式,无非也是从这些设计模式中变种而来。如果让笔者来形容什么是设计模式,我认为设计模式是:一种思想,一种模式,一种套路,一种解决问题的高效策略

举个生活中的列子:你需要从家去公园,虽然都是从A点到B点,但目的是着急取东西,你会用代步工具快速到达,但如果仅仅是打发时间,完全可以散步去。用代步工具和散步本身没有绝对的对错,只是根据当时的需求采取的策略。设计模式这种思想,就是根据你当时的需求给你提供最高效的策略。



有说的不正确或者不准确的地方欢迎留言指正


有什么有趣的写作技巧或者想法欢迎大家给我留言,大家的帮助是我写下去最有效的动力



简单工厂

在开发中,同学们会遇到这种情况,在业务逻辑中会经常创建一些如下实例

public interface IProduct{}

public class Computer : IProduct{}

public class IPhone : IProduct{}

public class Mac : IProduct{}

public class IPad : IProduct{}
    public void Example()
    {
        //DoSomeThing();

        Computer computer = new Computer();
        IPhone iPhone = new IPhone();
        Mac mac = new Mac();
        IPad iPad = new IPad();

        //DoSomeThing();
    }

如果这种情况比较多,那你就可以考虑下使用简单工厂模式了,让我们把上面的代码稍加改动一下

public enum ProductType
{
    None,
    Computer,
    IPhone,
    Mac,
    IPad
}
public class SimpleFactory 
{
    public static IProduct CreatProduct(ProductType productType)
    {
        IProduct tempProduct = null;
        switch (productType)
        {
            case ProductType.Computer:
                {
                    tempProduct = new Computer();
                }
                break;
            case ProductType.IPhone:
                {
                    tempProduct = new IPhone();
                }
                break;
            case ProductType.Mac:
                {
                    tempProduct = new Mac();
                }
                break;
            case ProductType.IPad:
                {
                    tempProduct = new IPad();
                }
                break;
                default:
                {
                    Debug.LogWarning($"没有指定的产品{productType}");
                }
                break;
       }
        return tempProduct;
    }
}

经过上面的改装我我们就可以这么写

    public void ExampleSimpleFactory()
    {
        IProduct computer = SimpleFactory.CreatProduct(ProductType.Computer);
        IProduct iPhone = SimpleFactory.CreatProduct(ProductType.IPhone);
        IProduct mac = SimpleFactory.CreatProduct(ProductType.Mac);
        IProduct iPad = SimpleFactory.CreatProduct(ProductType.IPad);
    }

让我们对比一下原来和现在的写法

仅仅这么看貌似没有什么区别,而且代码量不减反增了,接下来笔者就要说说为什么要这么写了~~~

如果项目的需求就是这4行实例Product能够满足后面的所有需求,那就按照最原始的写好了。
对于产品或者策划大佬说以后不会该需求的这种事,不管你们信不信,反正我是不信~~~

还有一点要说的就是,为什么叫她简单工厂,因为还有很多可以更改优化的地方,笔者会在后面的文章提到~

上一篇 下一篇

猜你喜欢

热点阅读