类之间产生依赖: var Dialog = function(){}; Dialog.prototype = { init : function(model) { var dialog; switch(model) { case "Alert": dialog = new Alert(); //类中包含别的对象,产生依赖 break; case "Confirm": dialog = new Confirm(); break; case "Information": default: dialog = new Information(); break; } dialog.open(); return dialog; } } 这里如果要添加新的model,就要修改Dialog,虽然它的功能并未发生改变。 解决方法是把创建新实例的工作转交给一个简单工厂对象: //简单工厂模式 var DialogFactory = { createDialog : function(model){ var dialog; switch(model) { case "Alert" : dialog = new Alert(); break; case "Confirm" : dialog = new Confirm(); break; case "Information": default: dialog = new Information(); break; } return dialog; } } var Dialog = function(){}; Dialog.prototype = { init : function(model) { var dialog = DialogFactory.createDialog(model); dialog.open(); return dialog; } } var Alert = function(){ this.type = "Alert"; } var Confirm = function(){ this.type = "Confirm"; } var Information = function(){ this.type = "Information"; }