zoukankan      html  css  js  c++  java
  • 简单工厂,工厂方法模式

    简单工厂模式:又称为静态工厂方法模式。

    在简单工厂模式中,可以根据参数的不同返回不同类的实例。

    简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

    例如

     <script>
            class work{
                 go(name){
                  return "今天坐"+name+"去上班"
                }
            }    
            let work1 = new work
            let work2 = new work 
            console.log(work1.go("汽车"))
    console.log(work2.go(
    "飞机"))

         console.log(work1.eat("汽车"))
          console.log(work2.eat("飞机"))
    </script>

    对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。只需要记住方法名字去调用就可以,并不需要知道方法的具体实现

    但是如果实现类比较多的时候,简单工厂方法就需要频繁的去修改父类,这显然是不符合开闭原则的。

    工厂方法模式

    定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。

    //工厂抽象类
            class work {
                workto() {
                    return "工厂抽象类"
                }
            }
            //产品抽象类
            class traffic {
                go() {
                    return "产品抽象类"
                }
            }
            //产品子类,实现类
            class traffic1 extends traffic {
               go() {
                   console.log("产品1被创建")
                }
            }
            class traffic2 extends traffic {
                go() {
                    console.log("产品2被创建")
                }
            }
            //工厂子类,实现类
            class work1 extends work {
                workto(){
                    return new traffic1
                }
            }
            class work2 extends work {
                workto(){
                    return new traffic2
                }
            }
            //通过工厂实现类创建不同的产品实例
            workA = new work1
            workA.workto().go()
    
            workB = new work2
            workB.workto().go()
    

    工厂模式可以说是简单工厂模式的进一步抽象和拓展,在保留了简单工厂的封装优点的同时,让扩展变得简单,让继承变得可行,增加了多态性的体现。

    后来又改了一下下边 使得每个具体工厂类只负责创建对应的产品,更符合单一原则,简单工厂有用switch方法的  感觉不太好

    如有不足之处 ,请批评指正

  • 相关阅读:
    js图片预览插件,不涉及上传
    订单数字提醒的实现
    php对数组中的值进行排序
    sql按照in中的顺序进行排序 mysql
    商城公告功能开发总结
    swiper 多个循环的实现
    thinkphp中的多字段模糊匹配
    phpmailer绑定邮箱
    thinkphp中的session的使用和理解!
    thinkphp引入类的使用
  • 原文地址:https://www.cnblogs.com/netUserAdd/p/10529597.html
Copyright © 2011-2022 走看看