zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式

      假如你很有钱,在你没有应用工厂模式之前,你的生活方式是这样的:

      你要出去,你需要先自己找穿的T恤,裤子、鞋子等。这样肯定很麻烦,什么事都需要亲力亲为。

      如果应用了简单工厂模式,就相当于你找了个管家,不过这个管家比较死板,技能比较有限,你告诉他你要什么他就给你什么,有可能他给不了你,假如这个管家只能提供上衣、裤子、鞋子,假如你需要一个公文包怎么办?两个选择,让你的这个管家去补充【修改源代码】,再有一种就是再招一个管家【应用工厂方法模式】,再招的管家和原来的管家都有一个共同的行为,给我提供我需要的东西【共同的行为,可以抽象一个接口,定义一个行为规范】

      工厂方法模式,可以简单理解为你有多个管家,每个管家都负责一样事务,负责你上衣的管家,负责你裤子的管家,负责你鞋子的管家,他们都有一个共同的行为,为你提供你需要的东西。如果来了新的需求,比如说需要一个公文包,那你可以直接招一个负责你公文包的管家即可,这个管家必须有为你提供你需要的东西的行为【实现一个共同的接口】,因为他们都是为你服务的。不一定是招管家【产品可以不一样,工厂方法可以允许产品不一样,只要遵循共同的行为规范即可】,可以是找个女朋友,保姆都是可以的。

      抽象工厂模式,可以这么理解,你有多个女朋友【抽象工厂,共同的行为,为你提供衣服、裤子、鞋子……】和多个管家【抽象产品,提供衣服或裤子或鞋子】,管家是提供衣服(衣服又包含各种颜色,其他的也是分为各种颜色和大小)、裤子、鞋子、公文包等,你的女朋友【具体的工厂】为你提供某套衣服,比如说上班穿的、参加宴会穿的……具体的管家提供具体的某种产品【衣服或者裤子等】

        上面就是我的简单理解。

      >>>>什么事都要亲力亲为

      >>>>找一个能力有限的管家

      >>>>有多个管家,每个管家负责具体的事务

      >>>>有女朋友和管家,管家负责提供具体的东西,而女朋友负责帮你搭配组合。

  • 相关阅读:
    InjectAPC全部项目(Win32和Win64位)
    Codeforces Round #377 (Div. 2)
    Codeforces Canada Cup 2016
    UVa 1395 (最小生成树)
    空间表SpaceList
    线程中的临界区的应用
    【题解】狼和羊-C++
    【基础算法-树状数组】入门-C++
    【题解】在你窗外闪耀的星星-C++
    【题解】[NOIP模拟题]我要的幸福-C++
  • 原文地址:https://www.cnblogs.com/dawenyang/p/7614652.html
Copyright © 2011-2022 走看看