简单工厂,工厂方法模式

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

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

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

例如

 <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方法的  感觉不太好

 

 

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

转载于:https://www.cnblogs.com/netUserAdd/p/10529597.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值