【学习】Javascript设计模式——设计模式类别

39 篇文章 0 订阅
10 篇文章 0 订阅

前言

命名、抽象、标识是通用设计结构的主要方面,这些设计结构能被用于构造可复用的面向对象设计。设计模式确定所包含的类和实例、它们的角色、协作方式以及职责分配。

每一种设计模式都重点关注一个特定的对象设计问题或者设计要点,描述何时使用它,在另一些约束条件下是否还能使用,以及使用的效果和利弊。由于我们最终要实现设计,设计模式还是提供了示例,代码来阐明其实现。

虽然设计模式描述的是面向对象设计,但是他们都是基于实际的解决方案。这些设计方案的实现语言是主流面向对象的编程语言。

设计模式的分类

创建型设计模式

创建型设计模式专注于处理对象创建机制,以适合给定情况下的方式来创建对象,创建对象的基本方法都可能导致项目复杂性增加。而这些模式旨在通过控制创建过程来解决这类问题。

常见的创建型设计模式包括:Constructor构造器模式、Factory工厂模式、Abstract抽象模式、Prototype原型模式、Singleton单例模式和Builder生成器模式。

结构型设计模式

结构型设计模式与对象组合有关,通常可以用于找出在不同对象之间建立关系的简单方法。这种模式有助于确保在系统某一部分发生变化时,系统的整个结构不需要同时改变。同时对于不适合因某一特定目的而改变的系统部分,这种模式也可以帮助它们完成重组。

常见的结构型设计模式有:Decorator装饰者模式、Facade外观模式、Flyweight享元模式、Adapter适配器模式和Proxy代理模式。

行为型设计模式

行为型设计模式专注于改善或简化系统中不同对象之间的通信。

行为模式包括:Iterator迭代器模式、Mediator中介者模式、Observer观察者模式、Visitor访问者模式。

Class

Javascript是一种无类语言,但可以用函数来模拟类,然后使用new关键字创建新的对象,使用this来定义对象的新属性和方法。

function Car(model){
    this.model=model;
    this.color="silver";
    this.year="2012";

    this.getInfo=function(){
        return this.model+" "+this.year;
    };
}

然后我们像这样我们使用上面定义的car构造函数来实例化该对象。

var myCar=new Car("ford");
myCar.year="2010";
console.log(myCar.getInfo());
创建型模式基于创建对象的概念
工厂方法基于接口数据或者生成几个派生类的一个实例
对象
抽象工厂创建若干类系列的一个实例,无需描述具体的的类
生成器从表示中分离对象构建;总是创建相同类型的对象
原型用于复制或者克隆完全初始化的实例
单例一个类在全局访问点只有唯一一个实例

结构型模式基于构建对象块的想法
适配器匹配不同类的接口,因此可以在不兼容接口的情况下共同工作
对象
适配器匹配不同类的接口,因此可以在不兼容接口的情况下共同工作
桥接将对象接口从器实现中分离,因此它们可以独立进行变化
组合简单和复合对象的结构,使对象的总和不只是它们各部分的总和
装饰向对象动态添加备选的处理
外观隐藏整个子系统复杂性的唯一一个类
享元一个用于实现包含在别处信息的高效共享的细粒度实例
代理占位符对象代表真正的对象

行为型模式基于对象在一起配合工作的方式
解释器将语言元素包含在应用程序中的方法,以匹配预期语言的语法
模板方法在方法中创建算法的shell,然后将确切的步骤推到子类
对象
职责链在对象链之间传递请求的方法,以找到能够处理请求的对象
命令将命令执行从其调用程序中分离的方法
迭代器顺序访问一个集合中的元素,无需了解该集合内部的工作原理
中介者在类之间定义简化的通信,以防止一组类显式引用彼此
备忘录捕获对象的内部状态,已能够在以后恢复它
观察者向多个类通知改变的方式,以确保类之间的一致性
状态状态改变时,更改对象的行为
策略在一个类中封装算法,将选择与实现分离
访问者向类添加一个新的操作,无需改变类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值