工厂方法模式笔记
  通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例
  对于创建多类对象,简单工厂不太实用,这是简单工厂模式的应用局限,当然这正是工厂方法模式的价值之所在
  通过工厂方法模式可以轻松的创建多个类的实例对象,而且创建对象的方式避免了使用者与对象类之间的耦合,用户不必关心创建该对象的具体类,只需调用工厂方法即可。
  demo实例:为页面创建不同功能的按钮
按钮工厂类

             /*按钮工厂类*/
var ButtonFactory=function(type,content){
if(this instanceof ButtonFactory){
var s = new this[type](content);
}else{
return new ButtonFactory(type,content);
}
}

工厂原型中设置创建所有类型数据对象的基类

             //工厂原型中设置创建所有类型数据对象的基类
ButtonFactory.prototype = {
defaultBtn:function(content){
//默认/基本按钮
this.content = content;
(function(content){
var btn=document.createElement("button");
btn.innerHTML=content;
btn.style.color='#333';
btn.style.background='#fff';
document.getElementById('container').appendChild(btn); })(content);
},
primaryBtn:function(content){
//原始按钮
this.content = content;
(function(content){
var btn=document.createElement("button");
btn.innerHTML=content;
btn.style.color='#fff';
btn.style.background='#337ab7';
btn.style.borderColor='#2e6da4';
document.getElementById('container').appendChild(btn);
})(content);
},
successBtn:function(content){
//操作成功按钮
this.content = content;
(function(content){
var btn=document.createElement("button");
btn.innerHTML=content;
btn.style.color='#fff';
btn.style.background='#5cb85c';
btn.style.borderColor='#4cae4c';
document.getElementById('container').appendChild(btn);
})(content);
},
infoBtn:function(content){
//弹出信息的按钮
this.content = content;
(function(content){
var btn=document.createElement("button");
btn.innerHTML=content;
btn.style.color='#fff';
btn.style.background='#5bc0de';
btn.style.borderColor='#46b8da';
document.getElementById('container').appendChild(btn);
})(content);
},
warnBtn:function(content){
//谨慎操作的按钮
this.content = content;
(function(content){
var btn=document.createElement("button");
btn.innerHTML=content;
btn.style.color='#fff';
btn.style.background='#f0ab4e';
btn.style.borderColor='#eea236';
document.getElementById('container').appendChild(btn);
})(content);
},
dangerBtn:function(content){
//危险动作的按钮
this.content = content;
(function(content){
var btn=document.createElement("button");
btn.innerHTML=content;
btn.style.color='#fff';
btn.style.background='#d9534f';
btn.style.borderColor='#d43f3a';
document.getElementById('container').appendChild(btn);
})(content);
}
}

//测试的数据

             var data=[
{type:'defaultBtn',content:'默认按钮'},
{type:'primaryBtn',content:'原始按钮'},
{type:'successBtn',content:'成功按钮'},
{type:'infoBtn',content:'信息按钮'},
{type:'warnBtn',content:'警告按钮'},
{type:'dangerBtn',content:'危险按钮'},
];

循环生成多个对象实例

             for(var i=5;i>0;i--){
ButtonFactory(data[i].type,data[i].content);
}

html中css代码

             #container{width:500px;margin:100px auto;}
button{display: inline-block;padding: 6px 12px;margin-bottom:;font-size: 14px;font-weight:;line-height: 1.42857143;
text-align: center;white-space: nowrap;vertical-align: middle;-ms-touch-action: manipulation;touch-action: manipulation;
cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;
background-image: none;border: 1px solid transparent;border-radius: 4px;margin-right:5px;}

html代码

 <div id="container"></div>

浏览器显示截图

javascript设计模式-工厂方法模式的更多相关文章

  1. 4. 星际争霸之php设计模式--工厂方法模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  2. C++设计模式——工厂方法模式

    本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.» 本文链接:http://www.jellythink.com/arch ...

  3. [设计模式] javascript 之 工厂方法模式

    1. 简单工厂模式 说明:就是创建一个工厂类,里面实现了所对同一个接口的实现类的创建. 但是好像JavaScript 好像没有 接口 这号东西,所以我们去掉接口这个层; 当然,我们这里的 实现类 下的 ...

  4. JAVA设计模式--工厂方法模式

    工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关 ...

  5. 深入浅出设计模式——工厂方法模式(Factory Method)

    介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式.它解决的仍然是软件设计中与创建对象有关的问题.它可以更好的处理客户的需求变化. 引入我 ...

  6. 设计模式--工厂方法模式(Factory method pattern)及应用

    面向对象的好处: 通过封装,继承,多态把程序的耦合度降低. 用设计模式可以使程序更加灵活,容易修改,且易于复用. 1. 工厂方法模式 Define an interface for creating ...

  7. 我的Java设计模式-工厂方法模式

    女朋友dodo闹脾气,气势汹汹的说"我要吃雪糕".笔者心里啊乐滋滋的,一支雪糕就能哄回来,不亦乐乎?! 但是,雪糕买回来了,她竟然说"不想吃雪糕了,突然想吃披萨" ...

  8. 设计模式 — 工厂方法模式(Factory Method)

    在开发系统中,经常会碰到一个问题.现在需要实现的一些功能,但是这个功能模块以后一定是需要扩展的,那么现在开发中就不仅要实现现在的功能,还要考虑以后的扩展.那么为了系统的健壮,扩展就要遵循开闭原则(简单 ...

  9. C#设计模式--工厂方法模式

    0.C#设计模式-简单工厂模式 设计模式: 工厂方法模式(Factory Method Pattern) 介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用 ...

随机推荐

  1. .NET里简易实现IoC

    .NET里简易实现IoC 前言 在前面的篇幅中对依赖倒置原则和IoC框架的使用只是做了个简单的介绍,并没有很详细的去演示,可能有的朋友还是区分不了依赖倒置.依赖注入.控制反转这几个名词,或许知道的也只 ...

  2. 如何优雅地使用Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...

  3. 从零开始编写自己的C#框架(23)——上传组件使用说明

    文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发 ...

  4. 定时管理器框架-Task.MainForm

    入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...

  5. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  6. jvm系列(二):JVM内存结构

    JVM内存结构 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能 ...

  7. 深入学习jQuery描述文本内容的3个方法

    × 目录 [1]html() [2]text() [3]val()[4]总结 前面的话 在javascript中,描述元素内容有5个属性,分别是innerHTML.outerHTML.innerTex ...

  8. 来份ASP.NET Core尝尝

    0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之前一样,Demo+在Linux下运 ...

  9. C#委托的一次"甜蜜"接触

    委托是个说烂了的话题,但是依旧有好多人不知道为什么要在C#中使用委托,最近有朋友也问到我这个问题,所以举例些场景,以供那些知道怎么声明委托.怎么调用却不知道为什么要用的朋友一些参考,当然也是希望验证下 ...

  10. 学C#之设计模式系列笔记(2)观察者模式

    一.借鉴说明 1.<Head First Design Patterns>(中文名<深入浅出设计模式>) 2.维基百科,观察者模式,https://zh.wikipedia.o ...