zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式的处理和应用

    Hello,大家好,本周我又学习了工厂模式的架构,现在我来进行分享一下。

      一、简单工厂模式的复习

      二、工厂模式比简单工厂模式的优越性

      三、工厂模式的架构

      四、工厂模式的总结

    一、简单工厂模式的复习

      首先我们来复习一下简单工厂模式。我们知道简单工厂模式就是说在类中创建各个类。比如说我们写一个计算器,传给类中某个字符串,通过字符串来实例化相关的对象。

    以上图为例,我们可以通过传入某一个字符串,比如lenovo,hp等等来实例化相关的对象,从而进入到我们想要的类中。

    二、工厂模式比简单工厂模式的优越性

      但是这样有一个问题,那就是如果我们要添加一个功能(比如说我们加一个Dell电脑),那么我们就必须要修改类中的代码,但是这样做就影响了设计模式中的开闭原则。这样是不好的。所以我们需要重新调整我们的架构。而工厂模式恰恰就可以解决这个问题。

    三、工厂模式是什么

      好,搞清楚了这个问题我们就来说一下工厂模式。那么回到我们上一个问题,根据开闭原则,我们每加一个功能就需要添加一个类,那么我们就应该把上述分支代码拆分成四个类。以上面的例子来说,就是创建lenovo一个类,创建hp一个类,创建asus一个类,这样我们就能分开了。然后通过每个创建类来控制相应的实例化类,这样就方便的多了。其架构如下。

     如图,ConcreteCreator就是我们所说的控制类,用它来控制返回一个ConcreteProduct类即可。

    四、工厂模式总结

      总结一下,工厂模式比简单工厂模式来说,架构要更清晰,更明确,但是缺点就是添加代码量要稍多,前者只需要添加实际类和多加一个case,而后者却需要添加实际类和控制类,这是比较复杂的。

  • 相关阅读:
    BZOJ 1305 dance跳舞(最大流+二分答案)
    计蒜客 贝壳找房计数比赛(可重全排列+逆元)
    计蒜客 贝壳找房函数最值(好题,巧妙排序)
    Codeforces 463D Gargari and Permutations(求k个序列的LCS)
    Codeforces 552C Vanya and Scales(进制转换+思维)
    Codeforces 682C Alyona and the Tree (树上DFS+DP)
    Codeforces 332B Maximum Absurdity(DP+前缀和处理)
    Codeforces 981D Bookshelves(按位贪心+二维DP)
    Codeforces 225C Barcode(矩阵上DP)
    Codeforces 988F Rain and Umbrellas(DP)
  • 原文地址:https://www.cnblogs.com/songyuchen/p/12812656.html
Copyright © 2011-2022 走看看