JS 组合模式更常用于创建表单上,比如注册页面可能有不同的表单提交模块.对于这些需求我们只需要有基本的个体,然后通过一定的组合即可实现,比如下面这个页面样式(如图14-2所示),我们来用组合模式实现. 作者给的提示,首先创建基类 Base, 然后三个组合类 FormItem.FieldsetItem.Group,以及成员类InputItem.LabelItem.SpanItem.TextareaItem,创建完之后像下面这样拼出你的注册页面吧. var form = new FormItem('…
有一个需求要为document对象绑定click事件来是想隐藏提示框的交互功能,于是小白写了如下代码: document.onclick = function(e) { e.preventDefault(); if(e.target !== document.getElementById('myinput')) { hidePageAlert(); } } function hidePageAlert() { //隐藏提示框 } 同事小铭看了看代码说: “首先,你为document 绑定了cli…
模板方法模式(Template Method):父类中定义一组操作算法骨架,而降一些实现步骤延迟到子类中,使得子类可以不改变父类的算法结构的同时可重新定义算法中某些实现步骤. 项目经理体验了各个页面的交互功能,发现每个页面的弹出框样式都不太一致,有的是高度高一些,有的是字体大了些,有的是按钮歪了些. 于是我们就需要将这些页面中的弹出框归一化. 我们首先要做的就是创建一个基本提示框基类,然后其他提示框类只需要在继承的基础上,拓展自己所需即可了吧,这样日后需求再变动我们修改基础类就可以使所有提示框的…
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有机会验证数据并决定要不要提交表单 1.preventnDefault(event):可以用在表单数据无效时不发给服务器,对于动态绑定的onclick 事件. 2.Submit()方法也可以提交表单,但是不会触发submit事件,所以在使用时须先验证表单数据, 如:<%response.write(t…
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: Null值与False也不同.And.Or和Not三个bool操作如果设计Null,结果很迷惑. 2.搜索运行为空的列:任何与Null的比较逗返回“未知”,既不是True,也不是False. 在Where表达式中只能使用 Is Null 或者 Is Not Null,其他操作都查询不到结果. 3.不…
最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单工厂 又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例. 两种实现方式,第一种是通过类实例化对象创建,第二种是创建一个新对象然后包装增强其属性和功能. demo代码. 2)工厂方法 通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例. 将工厂方法看作是一个实例化对象的工厂类. demo…
职责链模式(Chain of Responsibility  Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止. 模式角色与结构: 示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CSharp.DesignPattern.Responsibil…
github地址:https://github.com/cheesezh/python_design_patterns 组合模式 组合模式,将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和对组合对象的使用具有一致性[DP]. from abc import ABCMeta, abstractmethod class Component(): """ Component为组合中的对象声明接口,在适当情况下,实现所有类共有接口的…
第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ?     Thread是所在主机运行的应用程序任务(task). 仅仅有一个线程的样例: public class Factorial { public static void main(String[] args) {…
本章将介绍如何编写适用于泛型for的迭代其(Iterator).7.1 迭代器与closurehttp://www.cnblogs.com/moonlightpoet/p/5685275.html 7.2 泛型for的语义泛型for在循环过程内部保存了迭代器函数.实际上它保存着3个值:一个迭代器函数.一个恒定状态(invariant state)和一个控制变量(control variable).泛型for的语法如下:for <var-list> in <exp-list> do …
 本文参考文献:GeekBand课堂内容,授课老师:李建忠 :大话设计模式 其余的模式方法请自行查看Geekband相关课程,在此不累述. 这周的课题是: 针对DrawingSystem中的基类Shape和各个子类Line.Rec.Circle.为支持更多的形状子类,请使用某种模式来支持灵活地创建它们.使用松耦合面向对象设计方法和思想,可使用伪码表示设计. 课程中提到了四种模式,“工厂方法”.“抽象工厂”.“原型模式”.“构建器”模式.最后聚焦在了“工厂方法”和“抽象工厂”这两种方法,那么第一个…
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务16:介绍 1.依赖注入概念详解 从UML和软件建模来理解 从单元测试来理解 2.ASP.NET Core 源码解析 任务17:从UML角度来理解依赖 1.什么是依赖 当一个类A完成某个任务需要另一个类B来帮助时,A就对B产生了依赖 例如CustomerController需要对customer进行新增或查找时用到EF,则对EF的Context产生了依赖 var cont…
组合模式(Composite Pattern): 组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构.组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式. 角色模式与结构: 组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象构件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理. 示例代码: using System; using System…
C++提供了3种循环: for 循环. while 循环 和 do while 循环 .如果循环测试条件为 true 或非零,则循环将重复执行一组指令: 如果测试条件为 false 或 0 , 则结束循环. for 循环 和 while 循环都是入口条件循环,这意味着程序将在执行循环体中的语句之前检查测试条件.do while 循环是出口条件循环,这意味若其将在执行循环体中的语句之后检査条件.每种循环的句法都要求循环体由一条语句组成.然而, 这条语句可以是复合语句,也可以是语句块(由花括号括起的…
参考https://www.cnblogs.com/lilinzhiyu/p/8125195.html 5.1 Lock接口 锁是用来控制多个线程访问共享资源的方式. 一般来说一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程访问共享资源,如读写锁). 在Lock接口出现前,java使用synchronized关键字实现锁的功能,但是在javaSE5之后,并发包中提供了Lock接口(以及其实现类)用来实现锁的功能. Lock提供了与synchronized相似的功能,但必须显示的获…
参考https://www.cnblogs.com/lilinzhiyu/p/8086235.html 4.1 线程简介 进程:操作系统在运行一个程序时,会为其创建一个进程. 线程:是进程的一个执行单元.在一个进程里可以创建多个线程,这些线程都拥有各自的计数器.堆栈和局部变量等属性,并且能够访问共享的内存变量.(处理器在这些线程上高速切换,让作用者感觉到这些线程在同时执行.) 1. 线程优先级 现代操作系统基本采用时分的形式调度运行的线程,操作系统会分出一个个时间片,线程会分配到若干时间片,当线…
static void Main(string[] args) { Console.WriteLine("学生甲抄的试卷:"); TestPaper A = new TestPaperA(); A.TestQuestion1(); A.TestQuestion2(); A.TestQuestion3(); Console.WriteLine("学生乙抄的试卷:"); TestPaper B = new TestPaperB(); B.TestQuestion1();…
前言 本文旨在记录JavaScript中常用的设计模式代码片段,简要说明使用场景,不过于追究细节.在设计模式开篇之前,还是先要搞清楚JavaScript中关于面向对象的基础知识,可以先看看JavaScript面向对象小抄集 JavaScript设计模式 简单工厂(Simple Factory) 简单工厂又叫做静态工厂方法( Static Factory Method ),由一个工厂对象决定创建某一种产品对象类的实例.主要用来创建同一类对象 类型:创建型 适用场景: 工厂类负责创建的对象比较少 客…
今天,我拿到了张容铭写的这本<JavaScript设计模式>这本书,开始了关于JavaScript更深一点的学习. 看到这本书开始的时候,虽然之前通过看书.一些比较好的视频的讲解,对JavaScript有了基础的认识,但是,在看到书的内容的时候,我内心还是有一种自己差的十万八千里的感觉,之前的代码写法不行,使用全局变量.全局函数,只是面向过程的编程的方法,扩展性.可重用性太低.以后我将每天更新博客,将自己所学每一种设计模式都po出来,我要自己看到自己的进步!!加油! 今天的内容是————面向对…
1 什么是建造者模式? 建造者模式(Builder)是将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示. 建造者模式的特点是分步构建一个复杂的对象,可以用不同组合或顺序建造出不同意义的对象,通常使用者并不需要知道建造的细节,通常使用链式调用来进行建造过程,最后调用build方法来生成最终对象. 同样作为创建型的设计模式,需要注意和工厂模式的区别,工厂虽然也是创建对象,但怎样创建无所谓,工厂模式关注的是创建的结果:而建造者模式不仅得到了结果,同时也参与了创建的具体过程,适合…
这篇博客只是自己对设计模式的理解的备忘~ 看完了<JavaScript设计模式>这本书,一直没有写博客记录一下,最近抽出时间来重读了一下,就顺便记录一下~ 如果你只是想粗略了解一下JavaScript的设计模式,继续读下去,就好了,如果你想详细了解的话,推荐汤姆大叔的系列博客 深入理解JavaScript系列 下面有些内容也是摘自汤姆大叔的博客~~ 1.Constructor(构造器)模式 声明一个首字母大写的function,通过在构造器前面加new关键字,实例化一个对象. 可以使用原型来定…
一.前言 门面模式,也称Facade(外观)模式.核心的两点作用—— 1> 简化类的接口(让接口变得更加容易理解.容易应用.更加符合对应业务),来掩盖一个非常不同或者复杂的实现 2> 消除类与使用它的客户代码之间的耦合 可以把门面模式想成是简化API来展示给其他开发人员,通常都是可以提高可用性. 二.举例 例子一.事件监听 function addEvent(el, type, fn) { if (window.addEventListener) { el.addEventListener(t…
桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化. 一.使用场景 使用场景一:事件监控 对于前端而言,最典型的使用场景——事件监控.如—— addEvent(element, 'click', getBeerById); // 可以看出这是一个只能工作在浏览器中的API,根据时间监听期回调函数的工作机制,事件对象会被作为第一个参数传递给这个函数. // 在本例中并没有使用这个参数,而只是从this对象获取ID.如果你对这个API函数做单元测试,就很困难了. // 对于…
如何成为一名合格的工程师? 作为一名合格的工程师,不仅需要懂代码,还要懂设计,一名合格工程师的必备条件: 前端开发有一定的设计能力,一般三年开发经验的同学,面试必须考设计能力 成为项目技术负责人,设计能力是必要的基础,如果没有设计能力就没办法承担起项目的规划和设计工作 从写好代码,到做好设计,设计模式是必经之路 前端学习设计模式的困惑 网上资料都是针对java等后端语言的 看懂概念,但是不知道怎么使用,看完就忘记了 现在的js框架,到底用了哪些设计模式 本系列文章做什么 讲解js设计模式,其中包…
第14章   使用CSS3动画 [学习重点] 设计2D动画 设计3D动画 设计过渡动画 设计帧动画 能够使用CSS3动画功能设计页面特效样式 14.1  设计2D动画 CSS2D Transform表示2D变换,目前获得了各主流浏览器的支持:CSS3D Transform支持程度不是很完善,仅能够在部分浏览器中获得支持.语法如下: transform:none | <transform-function> [ <transform-function>]*; transform属性的…
第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of a connection across a computer network,Sockets are often represented internally as simple integers, which identify which connection to use. 套接字是网络通信的…
第13章,事件 事件冒泡 IE的事件叫做事件冒泡:由具体到不具体 <!DOCTYPE html> <html> <head>      <title>Event Bubbling Example</title> </head> <body>      <div id="myDiv">Click Me</div> </body> </html> 如果你单击了…
javascript 设计模式 第1章 灵活的语言--JavaScript 初级程序员接到一个验证表单功能的任务,需要验证用户名.邮箱.密码等 ** 此文章内容大部分来自 <javascript设计模式>一书,请支持正版.** 1.简单的验证check.js 代码如下: function checkName(){ //验证姓名 } function checkEmail(){ //验证邮箱 } function checkPassword(){ //验证密码 } 这段代码功能可以实现,但是创建…