美文网首页程序员Android开发技术开发
不要为了使用设计模式而使用设计模式,这并不牛!

不要为了使用设计模式而使用设计模式,这并不牛!

作者: 岛上码农 | 来源:发表于2020-11-07 08:12 被阅读0次

    前言:设计模式几乎是程序员必修的一门课程,而能够深入理解和运营设计模式更是程序员向架构师进阶的必备技能。但是,实际上,很多人对设计模式的理解仅仅停留在表面,甚至还因为代码中使用了设计模式而洋洋自得——而根本不管这是否必要!

    理解GOF(Gang of Four,指撰写《设计模式》的四位作者)设计模式对于程序员而言是十分有价值的。当然,相对于理解,大部分设计模式的拥趸看起来仅仅是使用他们。甚至,在有些时候过度使用。

    Java的Spring框架其中臭名昭著的一点是充斥着类似SimpleBeanFactoryAwareAspectInstanceFactory名称的类。至于其中命名是否简便性和设计模式是否正确运用这个由读者自己评判,但是就我本人而言,是十分讨厌看到这样的东西的。

    设计模式可以拆分为四个大的类型:行为型、结构型、并行型和创建型。创建型,如同名称所示,是讲述如何编写创建各类对象实例的代码,例如工厂类。这是用于编写可复用、可测试和模块化代码的合集。大部分依赖注入(DI)和控制反转(IOC)框架是应用了创建型的设计模式。

    然而,这给人造成了直接调用构造函数创建对象的方式是很Low的错误印象。例如,Emiko就发现了如下的Java代码:

        /**
         * Creates an empty {@link MessageCType}.
         * @return {@link MessageCType}
         */
        public static MessageCType createMessage() {
            MessageCType retVal = new MessageCType()
            return retVal;
        }
    

    这仅仅是一个替换构造函数的方法,类似的代码就像成堆的垃圾一样在项目里随处可见。如果是他们把这个方法应用于流式编程中创建对象的话还情有可原。然而……他们并没有,实际上最终的调用代码是这样的:

        MessageCType msg = MessageCType.createMessage();
        msg.type = someMessageType;
        msg.body = …
    

    由此,Emiko总结到:“在工作中,我们显然在为自己使用了高大上的设计模式而感到自豪!”

    相关文章

      网友评论

        本文标题:不要为了使用设计模式而使用设计模式,这并不牛!

        本文链接:https://www.haomeiwen.com/subject/lflfbktx.html