首页
学习
活动
专区
工具
TVP
发布

领域驱动设计DDD实战进阶

DDD第一波视频课程:请关注 “msshcj” 微信公众号 QQ群:309287205
专栏作者
73
文章
68009
阅读量
161
订阅数
18-TypeScript模板方法模式
在有些情况下,一个功能在基础功能上是不会变的,算法的基本骨架也是确定的,但是在某些场景下算法的具体实现有些差异。应对这种问题,可以采用模板方法模式: abstract class Salary{ abstract ComputeBaseSalary():void; abstract ComputeDecuteSalary():void; abstract ComputeBonusSalary():void; //定义了通用实现与算法骨架,具体实现在子类中有差别 Com
用户1910585
2018-05-04
6890
17-TypeScript代理模式
在有些情况下,我们需要把客户端真正调用的类和方法隐藏起来,而通过暴露代理类给客户端。客户端调用代理类的方式就可以访问到真实类提供的功能。 abstract class Called{ protected Process():void{ console.log("Called is Processing"); } } class Proxy extends Called{ Process():void{ console.log("Proxy is Ca
用户1910585
2018-05-04
9040
16-TypeScript装饰器模式
在客户端脚本中,有一个类通常有一个方法需要执行一些操作,当我们需要扩展新功能,增加一些操作代码时,通常需要修改类中方法的代码,这种方式违背了开闭的原则。 装饰器模式可以动态的给类增加一些额外的职责。基本实现思路是:定义一个装饰类,这个装饰类来装饰新的功能,将新的功能代码移植到继承装饰类的子类中,而这个子类先 调用装饰类的方法,紧接着实现自己的新功能,最后在客户端去显示装饰要调用哪些功能。代码如下: interface IPeople{ do():void; } class People impleme
用户1910585
2018-05-04
4710
15-TypeScript策略模式
在前面的简单工厂模式中,通常将每个类、接口定义到不同的文件中。在面向对象开发思想中有一个重要的原则就是封装变化点,在实际操作过程中, 通常被调用方的代码不要去更改,而是增加,这是面向对象的开闭原则。在简单工厂模式中存在一个问题,就是简单工厂类需要知道不同具体类的实现,如果现在多了一种算法比如乘法, 我们可以增加一个乘法类,但是需要在工厂类中修改代码,判断如果传入的是"*",则需要实例化另一个乘法类,这样就不太符合面向对象的开发思想。 通过使用策略模式,可以有效避免上述的问题,而将具体要实例化哪个算法类交给调
用户1910585
2018-05-04
8360
13-TypeScript单例模式
在JavaScript中,要实现设计模式比较复杂。而在TypeScript中因为使用面向对象的思想编程,要实现设计模式的方式与后端语言C#、Java等非常类似。 单例模式是一种常用的设计模式,通常用于我们只允许类的一个实例存在时,会使用单例模式。基本思路是把类的构造函数声明为私有的,这样调用方就不能通过实例化来 生成实例多个对象,另外类中有一个方法控制对象实例化,如果已经存在一个实例则直接返回,不存在则初始化一个新对象。 class User{ public name:string; pub
用户1910585
2018-05-04
9370
08-TypeScript中的类
类的概念通常是在后端开发中实现的思想,比如C#、C++或Java,传统的JavaScript开发通过使用原型模式来模拟类的功能。在TypeScript中,天生就是支持类 的,可以让前端的开发更加具有面向对象思想开发的实现。 class Doctor{ public name:string;//默认不写就是public public getname():void { console.log("my name is:"+this.name); } } var doc1=
用户1910585
2018-05-04
9880
07-TypeScript的For循环
在传统的JavaScript中,关于循环,可以有两种方式,一种是forEach,一种是for。 forEach的用法如下: var sarr=[1,2,3,4]; sarr.desc="hello"; sarr.forEach(value=>console.log(value)); 上述forEach循环主要存在两个问题,第一个问题是新加入的值会被忽略掉,另一个问题主要的问题是不能使用break跳出循环。 for的用法如下: for(var n in sarr){ console.log(n);//
用户1910585
2018-05-04
1.5K0
05-TypeScript中的方法新功能(下)
再TypeScript中,方法还有一些新功能能够让我们更好的控制方法执行。 1.Generator方法: yield关键字用于控制方法在执行的时候暂停住,后续方法调用方又可以从暂停的地方继续执行,这种具有yield关键字的并标记为*的方法叫Generator方法。 function* dosomething(){ console.log("starting"); // 执行到这里,会暂停住 yield ; console.log("finished"); } var func
用户1910585
2018-05-04
8340
04-TypeScript中的方法新功能(上)
在TypeScript中,提供了一些函数的新功能,能够简化JavaScript中的一些比较复杂代码才能实现的一些能力。 在C#后端语言中,能够对方法传递的参数指定params关键字,也就是可以传递任意数量的参数值,比如 params string[] 就可以传递任意多数量的string类型参数值。 在TypeScript中要使用此功能,就需要使用rs操作符:...,代码示例如下: function Addrs(num1:number,...nums:Array<number>){ var _resu
用户1910585
2018-05-04
8530
03-TypeScript中的强类型
在js中不能定义类型,而是根据赋值后,js运行时推断类型。在ts中支持强类型,强类型包括string、number(浮点型,不是整型)、boolean、any(任意类型)、Array<T>、自定义类型(枚举、类等) 除了能给变量申明为强类型,参数也可以申明为强类型,方法也可以定义返回类型,方法如果没有返回值,定义为void类型。 var username:string; var age:number; var descrption:any; var isman:boolean; var schools:Ar
用户1910585
2018-05-04
1.8K0
02-TypeScript中新的字符串
TypeScript中引入了字符串模板,通过字符串模板可以方便的实现字符串换行的连接、方便变量的使用等。 1.在WebStorm中新建一个文件,后缀名为ts。 在建立ts文件时,WebStorm会问你是否需要自动生成对应的js文件,并设置js文件保存的位置。如果采用Visual Studio 2017,会自动在ts文件相同的文件夹生成对应的js文件。 ts与自动生成的js文件的配置关系,IDE会自动生成一个tsconfig.json的文件进行描述,如下: { "compilerOptions": {
用户1910585
2018-05-04
8310
01-TypeScript概述
本篇文章向大家介绍新的TypeScript客户端脚本语言,主要涉及两个方面,一是传统JavaScript语言的弱点,二是TypeScript语言的优势。 一.JavaScript的弱点 1.弱类型,缺乏必要的类型检查 JavaScript因为是解释型的语言,没有编译器,只有在执行时,根据变量的赋值,才能确定变量的类型,这样对于开发人员定义与排错 带来一定的复杂度。 2.编程不够语义化,阅读有一定困难 JavaScript因为不是面向对象的编程语言,没有很好的类的思想,而是通过function实现。在一些复杂
用户1910585
2018-05-04
7620
10-TypeScript中的接口
接口是一种规约的约定,从接口继承的类必须实现接口的约定。在高级开发中,通常接口是用于实现各种设计模式的基础,没有接口,设计模式无从谈起。 定义接口: interface ILog{ recordlog():boolean; } 类从接口继承: class Log4Net implements ILog{ public recordlog():boolean{ try{ console.log("log4net has been recored");
用户1910585
2018-05-04
1K0
09-TypeScript中的继承
在后端开发语言中,继承是非常重要的概念,继承可以让子类具有父类的成员和方法,通过实例化子类,就可以访问父类的成员和方法。 在JavaScript中,需要通过原型模式来模拟继承的实现。而在TypeScript中,天生就是支持继承的。 父类: class Doctor{ public name:string; public getname():void { console.log("my name is:"+this.name); } } 子类: class Advanc
用户1910585
2018-05-04
9550
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档