zoukankan      html  css  js  c++  java
  • 漫谈设计模式(二)---- 创建型模式

    创建型的模式有五种

    • 工厂模式(Factory Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
    • 单例模式(Singleton Pattern)
    • 建造者模式(Builder Pattern)
    • 原型模式(Prototype Pattern)

    首先呢,我们把这五个东西理解成五种不同的人,他们要搞事情,比比谁更厉害,比什么呢,他们都是创建型的,那么就比造个屋子吧。

    要求是屋子需要可以卖东西和睡觉。

    于是乎他们就开始造屋子了。

    ------- 过了半年 --------

    五个人都把屋子造好了,这些聪明的人类分别用自己的方法造出了屋子,我们一起来看看吧。。。

    1. 工厂模式

    sleeproom = new SleepHouse()
    sailroom = new SailHouse() 

    house = sleeproom + sailroom   

     工厂模式,认为生产个屋子还不容易嘛,需要什么就去找什么工厂,所以他是这样造的

    2. 抽象工厂模式

    sleeproom = new House('sleep') 
    sailroom = new House('sail') 
    house = sleeproom + sailroom 

     造屋子,就去屋子工厂,于是他抽象了一下,去了一个多功能工厂

    3. 单例模式

    house = House.instance()
    house.add('a beg')
    house.add('a shop')    

    单例觉得不对,造个屋子应该是拿一个屋子对象,然后给他加床,然后加个商铺。就可以睡觉和卖东西了。

    4. 建造者模式

    sailroom = new House.Sailroom()
    sleeproom = new House.Sleeproom()
    house = sailroom + sleeproom

     建造者模式,顾名思义啊,建造是一个庞大的工作,一个大的屋子由很多部分组成,然后每个小屋子也是一个类。所以说建造者模式专注于构建的过程

    作为一个建造者,我们一个一部分一部分的造,然后搭建这个屋子

    5. 原型模式

    House.prototype.sleep = sleep
    House.prototype.sail = shop
    house = new House()

    原型模式的方法找了一个可以强大的工厂,工厂需要什么就是找别人取这个技能

    聪明的人会发现。其实呢,这些方法都并不是那么好,也没有那么坏,各有利弊,比如(以下纯属个人见解。如果有不好不对的,望指正)

    原型模式,让类更加灵活,不同类公用相同的方法,比如jquery就是这样的,应该说js就是这样的,js是用原型模式构建的

    建造模式专注建造,让问题别的更加细致,比如antd,threejs都是这么做的,尤其是threejs很专注构建3d应用,看threejs的文档大家会发现three的api都和上边的示例的一样

    单例模式,koa,axios, koa-router就是这样的,构建一个实例,然后其他地方公用,当然也可以构建多个,然后分模块,这个也是分模块构建应用的一个很棒的实践

    工厂模式,最常见的解决简单问题的方法,简明扼要。

    抽象工厂模式,在工厂模式的基础上抽象了一层,在一些情况下可以让代码复用很多。

    当然宏观上是这样的,微观上可能各种模式都在同时作用。

    举了一些比较宽泛的例子,但是大家不要误解认为这些东西是很高层面的问题,解决小问题依然很有效。需要用哪种模式解决,自行思考。

    哒哒,这样就可以理解常见的这些创建型的模式了。

    然后我有机会会出结构型模式的7种模式。

  • 相关阅读:
    Smarty数学运算
    双引号里值的嵌入
    Smarty属性
    Smarty函数
    Smarty注释代码
    数据结构实验2——链表
    数据结构实验1——顺序表
    hdu 5459 Jesus Is Here
    hdu 5455 Fang Fang
    2018 多校6 hdu 6362 6370 6373
  • 原文地址:https://www.cnblogs.com/sowhite/p/9507181.html
Copyright © 2011-2022 走看看