Yii2 设计模式——简单工厂模式
除了使用 new 操作符之外,还有更多的制造对象的方法。你将了解到实例化这个活动不应该总是公开进行,也会认识到初始化经常造成“耦合”问题。
应用举例
yii\db\mysql\Schema 中: //创建 QueryBuilder 实例
public function createQueryBuilder()
{
return new QueryBuilder($this->db);
}
这里使用了简单工厂模式。
简单工厂
简单工厂(Simply Factory)可以作为 new 关键词的一种简单代替。简单工厂其实不是一个设计模式,反而比较像是一种变成习惯。由于经常被使用,所以很多人依然把它称为“模式”。很多人确实把这个变成习惯误认为是“工厂模式”。但是,不能认为简单工厂不是一个真正的“模式”,就忽略它的用法。
代码实现
//简单工厂
class SimpleFactory
{
public function createBicycle(): Bicycle
{
return new Bicycle();
}
} //所要创建的对象
class Bicycle
{
public function driveTo(string $destination)
{
}
} //使用
$bicycle = (new SimpleFactory())->createBicycle();
SimpleFactory 还可以拥有别的方法,每个方法还可以拥有参数,以创建不同的对象。
简单工厂封装创建对象的代码,有了 SimpleFactory 之后,如果我们需要 Bicycle 实例,就让 SimpleFactory 去给我创建一个,而不必自己再 new 一个。在需要多个对象的场合,使用一个工厂确实比一大堆 new 操作具有优越性。
Yii2中的简单工厂
简单工厂作为一种变成“习惯”,Yii2中有大量的应用,因为识别简单、用法简单,这里就不再多举例了。
Yii2 设计模式——简单工厂模式的更多相关文章
- Yii2设计模式——简单工厂模式
		除了使用 new 操作符之外,还有更多的制造对象的方法.你将了解到实例化这个活动不应该总是公开进行,也会认识到初始化经常造成"耦合"问题. 应用举例 yii\db\mysql\Sc ... 
- 3. 星际争霸之php设计模式--简单工厂模式
		题记==============================================================================本php设计模式专辑来源于博客(jymo ... 
- Golang设计模式—简单工厂模式(Simple Factory Pattern)
		Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ... 
- C++设计模式——简单工厂模式
		简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ... 
- 深入浅出设计模式——简单工厂模式(Simple Factory)
		介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ... 
- C#设计模式--简单工厂模式
		简单工厂模式是属于创建型模式,但不属于23种GOF设计模式之一. 举一个例子:一个公司有不同的部门,客户根据需要打电话到不同的部门.客户相当于上端,不同部门相当于下端.不使用简单工厂模式来实现的例子如 ... 
- 设计模式 | 简单工厂模式(static factory method)
		按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识. 但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了. 也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍. ... 
- 设计模式 — 简单工厂模式(staticFactory)
		这篇博文介绍简单工厂模式,设计模式并不是固定的二十三种,不同的书介绍的可能有出入,这篇介绍的简单工厂模式在有些书上就忽略不介绍了.设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验 ... 
- 在商城系统中使用设计模式----简单工厂模式之在springboot中使用简单工厂模式
		1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态 ... 
随机推荐
- leetcode日记  HouseRobber I II
			House Robber I You are a professional robber planning to rob houses along a street. Each house has a ... 
- django之信号
			Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pr ... 
- jsonp实现ajax跨域
			前端 dataType为jsonp,若不指定回调函数名则默认为callback $.ajax({ url:headUrl+'/img/getImgList', type:'GET', dataType ... 
- 20175224 2018-2019-2 《Java程序设计》第四周学习总结
			教材学习内容总结 子类的定义 class 子类名 extends 父类名 { ... } 子类继承性 子类继承父类的成员变量.方法.成员变量可以被子类中自己定义的任何实例方法操作:继承的方法可以被子类 ... 
- ubuntu配置neuwork网络
			ubuntu 网络配置 检查网络配置命令:ifconfig 一.通过配置文件配置 新手没怎么用过Ubuntu,所以走了不少弯路,网上找了很多方法,大都没对我起到帮助作用,所以把自己的配置方法写一写. ... 
- 今天想写一下关于SpringMVC的视图解释器
			昨天我写了一下SpringMVC最爱金丹的项目的配置流程,这样搭建完项目之后呢我发现我每个请求都得加个.do什么的后缀,这让我开发得很不爽,于是呢今天就想配置一下这个试图解释器,这样做的目的有两个:第 ... 
- PaperBye-一个可以自动改重的免费论文查重网站
			推荐一个自动降重的免费论文查重软件,可自动降低论文重复率,一边修改,一边查重,免费查重网址:https://www.paperbye.com 
- ajax成功返回结果字符串,对比不成功的解决办法
			这是很久之前遇到的问题了,今天不小心又遇到了,总结了一下以前处理的办法. 废话不说,上代码: $.ajax({ url:"exit.do", data:{account:accou ... 
- SQL注入之Sqli-labs系列第三十八关、第三十九关,第四十关(堆叠注入)
			0x1 堆叠注入讲解 (1)前言 国内有的称为堆查询注入,也有称之为堆叠注入.个人认为称之为堆叠注入更为准确.堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新 的查询或者终止查询,可以达到修改数据 ... 
- iOS证书申请及使用详细说明
			iOS 证书申请和使用详解(详细版)阅读 对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成 ... 
