V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
anguea
V2EX  ›  问与答

关于工厂模式和策略模式的区别?猿友们指点下迷津

  •  1
     
  •   anguea · 2017-05-26 08:51:31 +08:00 · 1522 次点击
    这是一个创建于 2528 天前的主题,其中的信息可能已经有所发展或是发生改变。
    WuMingyu
        1
    WuMingyu  
       2017-05-26 09:38:33 +08:00 via iPhone
    工厂模式是生成对象的吧,策略模式是针对某个功能有不同的实现策略吧
    zhanglp888
        2
    zhanglp888  
       2017-05-26 09:58:59 +08:00
    工厂模式就是在创建对象时不会对暴露创建逻辑,就好像,你买个汽车,直接交钱买就行了,不用去管,这个车在工厂里是如何组装起来的
    zhanglp888
        3
    zhanglp888  
       2017-05-26 09:59:28 +08:00
    工厂模式就是在创建对象时,不会暴露创建逻辑。
    就好像,你去买汽车,直接交钱买就行了,不用去管,这个车在工厂里是如何组装起来的
    korewayume
        4
    korewayume  
       2017-05-26 10:06:31 +08:00
    一个是创建型模式,一个是行为型模式
    korewayume
        5
    korewayume  
       2017-05-26 10:15:08 +08:00
    工厂模式:
    Factory:
    if type=="a":
    return new A
    if type=="b":
    return new B

    obj = new Factory(type)

    结果是 obj is A 或者 obj is B

    策略模式:
    Strategy:
    if type=="a":
    this.attribute = new A
    return this
    if type=="b":
    this.attribute = new B
    return this

    obj = new Strategy(type)

    结果是 obj has A() 或者 obj has B()
    zhanglp888
        6
    zhanglp888  
       2017-05-26 13:19:39 +08:00
    策略模式是为了解决的是策略的切换与扩展
    如果工厂是黑盒的话,策略模式就是白盒,
    买车的时候,你来选配置,然后把车开回家
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   864 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:13 · PVG 05:13 · LAX 14:13 · JFK 17:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.