Javascript设计模式(摘译)

摘要:
2)structural--主要关注对象的组合方法Structuraldesignpatternsareonesthatfocusoneasingtherelationshipbetweendifferentcomponentsofanapplication.Theyhelptoprovidestabilitybyensuringthatifonepartoftheappchanges,theentirethingdoesn'tneedtoaswell.3)behavioral--主要关注对象间的通信方式Behavioraldesignpatternsemphasizeflexibilitythroughtheidentificationofcommoncommunicationpatternsbetweenvariousobjects.二、日常使用的javascript设计模式1)TheModulePattern2)TheRevealingModulePatternvaraccount=function(){varbalance=0;vardeposit=function{balance+=money;console.log;sendMsg();};varwithdraw=function{balance-=money;console.log;sendMsg();};//私有方法varsendMsg=function(){console.log("sendingmessage!

说明: 未完成。。。更新中。。。。

一、javascipt设计模式分类

设计模式分类有很多标准,最流行的三种如下

1) creational -- 主要关注对象创建

Creational design patterns deal directly with object initialization procedures focusing on the creation of situation-specific objects. Without thinking about how objects are created, a level of complexity can be added to the design of an application. Creational design patterns work to solve this problem by adding a layer to the object creation process.

创建型设计模式直接处理对象的初始化程序,重点关注创建基于特定场景的对象。它不关注如何创建对象,其复杂性的层次直接加入到应用程序的设计中。创建型设计模式通过在对象创建过程上加上一层来解决问题。

Javascript设计模式(摘译)第1张

2) structural-- 主要关注对象的组合方法

Structural design patterns are ones that focus on easing the relationship between different components of an application. They help to provide stability by ensuring that if one part of the app changes, the entire thing doesn't need to as well.

Javascript设计模式(摘译)第2张

3) behavioral-- 主要关注对象间的通信方式

Behavioral design patterns emphasize flexibility through the identification of common communication patterns between various objects.

Javascript设计模式(摘译)第3张

二、日常使用的javascript设计模式

1)The Module Pattern

2)The Revealing Module Pattern

    var account = function(){
        var balance = 0;
        var deposit = function(money){
            balance + =money;
            console.log("balance after deposti: ",balance);
            sendMsg();
        };
        var withdraw = function(money){
            balance -=money;
            console.log("balance after withdraw",balance);
            sendMsg();
        };
        //私有方法
        var sendMsg = function(){
            console.log("sending message!")
        };
        //公共方法 -- send outside module
        return{
            deposit:deposit,
            withdraw: withdraw
        }
    };
    var a1 =account();
    a1.deposit(100);
    a1.withdraw(20);
    a1.sendMsg();  //could have a alert

3)The Singleton Pattern

            var PersonSingleton =(function(){
                varinstantiated;
                functioninit(){
                    functionmyOtherMethod() {
                        alert( 'my other method');
                    }
                    return{
                        name: 'Anonymous',
                        work: function(){
                            console.log(this.name + "is working");
                        },
                        someOtherMethod: myOtherMethod
                    }
                }
                return{
                    //handles the prevention of additional instantiations
                    getInstance: function(){
                        if(!instantiated){
                            instantiated =init();
                        }
                        returninstantiated;
                    }
                }
            })();
            var p1 =PersonSingleton.getInstance(); 
            p1.work();  //return Anonymouse
            var p2 =PersonSingleton.getInstance();
            p2.work();  //return Anonymouse

4)The Observer Pattern

5)The Mediator Pattern

6)The Prototype Pattern

7)The Facade Pattern

8)The Factory Pattern

参看:

  • https://carldanley.com/javascript-design-patterns/#creational-design-patterns

免责声明:文章转载自《Javascript设计模式(摘译)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux环境下的GCC编译器与GDB调试工具介绍一些常用的颜色分类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

kernel: blk_update_request: I/O error, dev fd0, sector 0

检查后,控制台无法登录。重新启动虚拟机,报告下图,然后执行journalctl以显示以下系统消息日志原因搜索。。。...

Ansible-Tower--安装配置及破解

Ansible-Tower是将ansible的指令界面化,简明直观,简单易用。2)Ansibke-tower其实就是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台,属于发布配置管理系统,支持Api及界面操作,Django编写。3)Ansible-tower可以通过界面从github拉取最新playbook实施服务部署,提高生产效率。...

JWT加密解密

token2、使用https传输协议。这点是最主要的,前面3的未必能够100%保证安全)JWT由三部分组成,可以把用户名、角色等无关紧要的信息保存到Payload部分。Header:base64enc  //eyAiYWxnIjoiSFMyNTYiLCJUWVBFIjoiSldUIn0=Payload:base64enc  //用户的关键信息eyJ1c2Vy...

iostat

-pdevice|ALL和-x选项互斥。它们用于显示块设备和系统分区的统计信息。您还可以在-p之后指定设备名称,例如#iostat phda或显示所有设备:#iostat pALL-t输出数据时,打印数据收集时间---等待I/O svctm的平均时间:服务时间,从生成IO请求到完成IO的时间。从源代码中可以看出:--完成I/O需求的平均时间*=util---...

mac vscode 下载安装与配置

我觉得这太复杂了。只需直接缩放图像。png2)修改右侧图像上编辑器的文本大小。png...

Qemu模拟器运行AIX 7.2 系统

AIX系统是IBM开发的一套UNIX操作系统。它可以在所有IBM p系列和IBM RS/6000工作站、服务器和大型并行超级计算机上运行。CPU通过动态二进制转换进行仿真,并提供了一系列硬件模型。AIX系统仅支持IBM的powercpu,通用虚拟机软件仅采用X86架构,无法安装。由于QEMU的全仿真特性,可以对powercpu进行仿真以实现系统安装。...