javascript设计模式-工厂模式

简单工厂模式:使用一个类来生成实例。

复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例。

简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口。通过工厂,可以取得需要的实例。逻辑示意图:

下面列举了一个例子:

var Coffee = function(){
    this.color="brown";
};
var Milk = function(){
    this.color="white";
};
var OrangeJuice=function(){
    this.color="orange";
};
var DrinkShop = function(){
    this.sellDrink = function( type){

       var drink;

        switch( type){

           case "coffee":

                drink= new Coffee();

                break;

            case "milk":

                drink= new Milk();

                break;

            case "orangeJuice":

            default:

                drink= new OrangeJuice();

               break;

        }
        drink.showColor=function(){
            console.log("Drink color:"+drink.color);
        };
        return drink;
    }
};

var drinkShop = new DrinkShop();
drinkShop.sellDrink("milk").showColor();//Drink color:white

可以看出,简单工厂会根据需要生成实例,而这些类一般都包含有某些属性或方法。比如上例中,各种drink都有color属性。这样做的好处就是把需要创建实例的部分抽离,统一管理,对于系统的各部分职能进行划分,降低耦合度。

工厂模式的适用场景:

1.对象的构建相对复杂

2.需要依赖具体环境创建不同实例

3.处理很多具有相同属性的小对象

时间: 2024-10-10 01:17:59

javascript设计模式-工厂模式的相关文章

JavaScript设计模式——工厂模式

工厂模式:是一种实现“工厂”概念的面上对象设计模式.实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行.创建一个对象常常需要复杂的过程,所以不适合在一个复杂的对象中.创建对象可能会导致大量的重复代码,也可能提供不了足够级别的抽象.工厂方法模式通过定义一个单独的创建对象的方法来解决这些问题,由子类实现这个方法来创建具体类型的对象. 1.简单工厂: //定义接口 var Bicycle = new Interface('Bicycle', [

javascript设计模式-工厂模式(简单工厂)

接口在工厂模式中起着很重要的作用,如果不对对象进行某种类型检查的以确保其实现了必要的方法,工厂模式的好处也就所剩无几了,举个简单的例子. Interface.js 1 // Constructor. 2 3 var Interface = function(name, methods) { 4 if(arguments.length != 2) { 5 throw new Error("Interface constructor called with " + arguments.le

JavaScript高级---工厂模式设计

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <ti

javascript 简单工厂模式

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 var Bicycle = new Interface("Bicycle",[

6.大话设计模式-工厂模式

工厂模式和简单工厂有什么区别.废话不多说,对比第一篇例子应该很清楚能看出来. 优点: 工厂模式弥补了简单工厂模式中违背开放-封闭原则,又保持了封装对象创建过程的优点. using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace DesignModel{    public interface Factory   

设计模式---工厂模式---生产水果

设计模式---工厂模式 需要一个基本的抽象类:相当一个基本的工厂 需要若干个具体类:相当若干个产品 需要工具类:相当工厂中机器,用来选择不同的产品生产 需要主类:相当顾客所想的订单 主类 ----> 工厂类 ----> 产品类 ---> 产品具体类 老板根据顾客的订单,在工具堆中选择合适的,然后去工厂中生产适合的产品,返回给顾客 优势:能够在不修改原先的代码情况,增加所需的类与方法. 不足:会增多类文件的数量 接口:提供的内容,相当于协议,即外界使用此接口时,接口的内容是不允许外界对接口

设计模式——工厂模式学习

1.概念 工厂模式定义:实例化对象,用工厂方法代替new操作.达到解耦的目的(避免硬编码耦合).工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式. 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见.因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例

二十三种设计模式——工厂模式

二十三种设计模式--工厂模式 简单工厂模式 简单工厂模式又称静态工厂方法(StaticFactory Method)模式,不属于23种模式之一. 简单工厂模式是工厂模式最简单使用的模式. 类图: 程序: #include <iostream> #include<string> using namespace std; class NationalFlag//父类 { public: NationalFlag(){} ~NationalFlag(){} virtual void di

设计模式-工厂模式[Factory]

先看下一个简单的实现: 1 package org.masque.designpatterns.factorymethod.one; 2 /** 3 * 4 * Description: Sample子类的标示 5 * BeanEm.java Create on 2014年7月11日 下午2:37:58 6 * @author [email protected] 7 * @version 1.0 8 * Copyright (c) 2014 Company,Inc. All Rights Res