创建设计模式:顾名思义,这些模式用于创建实例对象。
单个模式:首先,我们必须了解一个人是什么。
单人:它是指一个。
示例:指创建的示例。
单个示例:指创建同一实例。换句话说,由类创建的实例始终相同。
让我们看一下以下代码:
班级{
constructor(){}
}
令p1 = new person();
令p2 = new person();
(P1 === P2)//假货
上面的代码定义了一个人类。创建这两个示例。我们可以看到这两个示例是不同的。换句话说,它与同一类的实例不同(为什么),但是如果我们总是得到相同的情况,那么这就是道路**订单。因此,如何实现单打模式:
为了获得一个例子,我们必须注意两点:
您需要使用返回。如果您在使用新的时不手动返回,则默认情况下将其返回。但是,我们希望一次返回一个实例,也就是说,您必须手动控制创建对象,因此您需要在此处使用返回。每次返回时,我们都需要相同的对象。换句话说,首先,您需要保存此实例。在下一个实例中,直接返回此保留的实例。因此,需要在这里使用封闭。
代码实现如下:
(功能 () {{
海实例= null;
返回类{{{
constructor(){
是(实例){{{
//创建一个实例,然后需要保存实例
示例= this;
} 别的 {
返回实例
}
}
}
})((((((((((((((((((((((((((((),
令p3 = new Person();
令p4 = new person();
(p3 === p4)//是
从上一个代码中,我们可以看到,最后,每次返回个创建实例时,实例变量都用于保存创建的实例。这样,无论您相信多少次,都可以创建相同的实例。这是单例模式。
出厂模式
对于工厂而言,我们的印象可能是内部有各种模具,以及您需要的产品所需的产品。例如,如果您要求工厂帮助您处理产品,则只需要分辨出工厂产品的结构即可。工厂将拥有相应的模型来帮助您生产。您不必担心如何处理。工厂模型也是如此。 (工厂模型也是创建实例对象的创建设计模式)。您不必自己创建相应的类即可创建实例。您只需要告诉工厂类别即可创建一个示例。返回所需的实例对象。
根据抽象的程度将工厂模型分为三种类型:
1.简单的工厂模式
2.工厂方法模式
3.工厂抽象模式
简单的工厂型号
定义:定义工厂类。工厂类通过工厂功能返回不同的实例,具体取决于传递参数。请参阅以下代码:
//学生课
班级学生{
施工功能(名称,年龄){= name;
this.age =年龄;
}
showeame(){{{
()
微信小程序直播怎么开通}
}
//老师课
班主任{
施工功能(名称,年龄){= name;
this.age =年龄;
}
showeame(){{{
()
}
}
//警察课
警察级{
施工功能(名称,年龄){= name;
this.age =年龄;
}
showeame(){{{
()
}
}
根据类创建对象。
const S1 =新学生('Wang Xiaoyi',24);
const t1 =新老师('li yi”,39);
const [哪家公司对开发网站公司有益] p1 =新警察('Zhang是警察',40岁);
我们可以看到,以前的代码中定义了三个类别,学生课,教师课和警察课程。它们具有相同的属性和方法。当我们需要创建一个学生榜样时,我们将其称为学生课程。当我们需要创建老师的榜样时,我们将其称为教师课程。当我们需要建立一个警察榜样时,我们打电话给警察。假设我们有更多具有相同函数的字符类,因此当我们需要创建一个实例时,我们还必须调用相应的类。实际上,这些类实施相同的功能,因此我们可以通过类完成所有这些角色实例的创建。我们尝试修改代码如下:
//学生课
上市公司网站制作哪家好班级学生{
施工功能(名称,年龄){= name;
this.age =年龄;
}
showeame(){{{
()
}
}
//老师课
班主任{
施工功能(名称,年龄){= name;
this.age =年龄;
}
showeame(){{{
()
}
}
//警察课
警察级{
施工功能(名称,年龄){= name;
this.age =年龄;
}
showeame(){{{
()
}
}
//工厂类别
工厂类别{
令obj = null;
//工厂功能
构造功能(字符,名称,年龄){
更改(角色){{
案例“学生”:
OBJ =新生(名称,年龄);
休息
案例“老师”:
obj =新老师(名称,年龄);小程序开发哪家专业
休息
案件“警察”:
OBJ =新警察(名称,年龄);
休息
}
}
返回OBJ;
}
const s2 =新工厂('学生','Wang Xiaofri',25);
const t2 =新工厂('老师',“老师li er”,39);
const p2 =新工厂('警察','Zhang两名警察',40);
在上面的代码中,我们可以看到三种类型的学生课程,校长和警察也被定义,但是在创建示例时使用它们,并且不再具有工厂中的相应角色。该工厂是工厂级别。我们观察到的工厂的实现并发现工厂功能(构造函数用于直接在这里,我们还可以定义自己的工厂功能)。将不同的参数返回到出厂功能并返回不同的实例。这是一个简单的工厂模型。
摘要工厂模型摘要:
实现:从上面的代码中,我们可以知道,工厂的简单模型是工厂和工厂功能,它返回不同的实例传递不同的参数。
功能:1。较少的类来评估必须通过的参数的影响,因为返回的实例必须通过。如果类别太多,逻辑将变得复杂。 2.您无需关注实例的创建过程,只需要传递相应的值即可。
适用的方案:对于生活中的实际用途,如果我们需要参加篮球,足球和排球体育课,我们可以去一个相应的球(类似于创建它的对象),或告诉他他通过管理员,告诉他他需要什么样品球。至于如何管理相应的球,这与我们无关。管理员是工厂。
缺点具有简单的工厂模型。我们知道,简单的工厂模型适合生产更少的类和逻辑。它很复杂,需要再次需要。一旦您需要添加新课程,重新编辑工厂就非常不便。
工厂方法模式
工厂方法模型是简单工厂的附加优化。在工厂方法模型中,它不再是我们提供的统一工厂的所有对象,但是不同的制造商不同。这意味着每个对象都有一个相应的工厂。这看起来很复杂。实际上,我认为这是解决简单的工厂模型以添加新类是不便的,因为工厂的功能需要添加新类以修改它。工厂方法的方法是解决此问题,请参阅以下代码:
海工厂=(功能(){
离开s = {
学生(名称,年龄){= name;
this.age =年龄;
返回此
}
老师(名称,年龄){= name;
this.age =年龄;
返回此
}
警察(名称,年龄){= name;
this.age =年龄;
返回此
}
//在这里添加一个新类别
医生(名称,年龄){= name;
this.age =年龄;
返回此
}
}
班级表现{
//根据参数传输的不同工厂。
建筑商(类型,名称,年龄){
如果(type){
返回s [type] .call(此,名称,年龄)
} 别的 {
投掷新错误(`$ ablic` {type} class)
}
}
}
})((((((((((((((((((((((((((((),
令S3 =新工厂('学生','Wang Xiaosan',25);
令T3 =新工厂('Master','Li San Master',25);
令P3 =新工厂('警察',”张三名官员,28岁);
令D3 =新工厂('医生',“ Yang博士”,33);
在上一个代码中,我们可以看到,与功能的简单工厂相比,模型工厂的工厂功能不是固定的,而是根据类型进行更改。当我们必须添加新类型时,我们只需要添加一个对象实例,也无需修改工厂的功能。在这种情况下,您不必添加新类别来修改太多代码逻辑。这是工厂方法模式。实际上,它只是优化了简单的工厂模型。
学习网络的前端实际上非常简单。下面是小小比亚汇编的Web前端学习教程(部分屏幕截图)的系统。请注意编辑的标题编号,可以免费收集私人消息[前端]!
网站建设钱 网站建设一般要多少钱
请立即点击咨询我们或拨打咨询热线: 13968746378,我们会详细为你一一解答你心中的疑难。项目经理在线