设计模式
什么是设计模式:一套可以被复用的,编写分明的经验总结。
作用:让我们写的代码可复用,提法我们的代码的可维护性。
学习范围:本次主要学习在js中应用很广的设计模式
目的:用它来解决一些实战中的问题,我们学习要先学习这些问题,再用设计模式给出一套解决问题方案。
分类
一、创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。(解决创建类或者实例化对象时候产生的问题)
二、结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。(解决类或者对象在组合在一起时候的问题)
三、行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。(解决类或者对象之间耦合,职责关系的问题)
简单工厂模式
简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。说得通俗点就像饺子馆里面的饺子,要汤的还是要干拌的,取决于客户的需求
var
car
Factory = {
createCar :
function
( model ){
var
car;
switch
( model ){
case
"SportsCar"
:
car=
new
SportsCar(); //具体的实现方法可以看成是都实现了造车的接口,并且进行了相应的重写
break
;
case
"SUV"
:
car=
new
SUV
();
break
;
default
:
car=
new
Sedan(); //普通家轿
break
;
}
return
car;
}
}
我们可以把carFactory的创建和使用看成是一个简单的工厂模式,我们需要什么类型的车,只需要告诉工厂类或者方法的类型就好了
完全不用在编译期去确定我们具体需要什么类型的车,只需要在我们需要的时候告诉他就好了。并且如果需要新增汽车的类型,那么我
们只需要在carFactory里新增类型就好了
var
Shop =
function
(){};
Shop.prototype = {
sellCar :
function
( model ){
var
car = carFactory.createCar(model);
return
car ;
}
}
创建好店面和汽车工厂后,我需要一辆跑车的具体实现方式就是以下模样
var carShop = new Shop();
var myCar = carShop.sellCar("SportsCar");
-----------------------------------------------------------------------------------------