zoukankan      html  css  js  c++  java
  • js设计模式---工厂模式

    感觉是个老生常谈的问题,

    我这里写这篇文章是为了记录一下我学习设计模式中的一点内容,之前写的最多的是入门操作之类的,今天突然想写点理论上的东西。

    问:为什么会有设计模式?

    答:回答这个问题之前要先了解什么是设计模式(Design pattern)---设计模式是一套被反复使用、多人知晓的、经过分类编目的、代码设计经验的总结。

    我们学习设计模式其实是为了写出复用性、可读性、可靠性都高的代码,同时也是为了看懂别人的代码。设计模式也是软件工程的基石。

    设计模式很多种我现在讲讲我们常用的几种吧

    1、工厂模式

    一、工厂模式

      定义:一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。{ 简单的来说就是轮胎厂生产什么类型的轮胎让,下游产业(自行车厂、汽车厂)告诉他是生产什么类型的轮胎 }

      讲解:假如我们需要插入一个元素,但是这个元素个类型不固定,可能是图片、链接、文本。用工厂模式的方式来定义,我们需要定义一个工厂类和对应类型元素的子类。

    var node = {}
    node.createNode = {}
    
    //创建图片的第一个子类
    node.createNode.Image = function(){
        this.appendTo = function(parentNode){
            var im = document.createElement('img');
            parentNode.appendChild(im)
        }
    }
    //创建图片的第一个子类
    node.createNode.Text = function(){
        this.appendTo = function(parentNode){
            var text = document.createTextNode();
            parentNode.appendChild(text)
        }
    }
    //创建图片的第一个子类
    node.createNode.Link = function(){
        this.appendTo = function(parentNode){
            var link = document.createElement('a');
            parentNode.appendChild(link)
        }
    }
    
    //工厂类
    var createNodeByFactory = function(nodeType){
        return new node.createNode[nodeType]
    }
    
    var dom = createNodeByFactory('Image')
    dom.appendTo('父元素')

      以上是工厂模式的实现---问题解决的很漂亮,但是解决过程很繁琐而且工厂模式没法判断类型

    js 是门动态语言(也叫弱类型语言)使用工厂模式写代码很累,而且可读性不强,建议不要滥用工厂模式

      

  • 相关阅读:
    Python3.x:定义一个类并且调用
    Spring编码过滤器:解决中文乱码
    Web.xml中自动扫描Spring的配置文件及resource时classpath*:与classpath:的区别
    你是否属于中等收入群体
    Python3.x:BeautifulSoup()解析网页内容出现乱码
    Activiti工作流引擎数据库表结构
    Java:出现错误提示(java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date)
    Django框架搭建(windows系统)
    Eclipse配置多个jdk
    Activiti:创建activiti工程
  • 原文地址:https://www.cnblogs.com/web-Rain/p/7760988.html
Copyright © 2011-2022 走看看