解析PHP工厂模式的好处
顾名思义,工厂可以加工零件。PHP程序的工厂模式具有相同的功能。它可以用静态工厂方法实例化一个类。那么做这件事有什么好处呢以下是我对PHP设计模式的个人理解。一般来说,我们实例化一个类来给它一些参数,这样我们就可以根据构造时不同的参数来反馈我们需要的结果。
例如,下面是一个非常简单的用户类:
复制代码代码如下所示:
< PHP
IUser {接口
getName()函数;
getAge()函数;
}
类用户实现了IUser {
保护_name美元;
保护_age美元;
功能__construct($name,$AGE){
美元-> _name = $名称;
美元-> _age =(int)$的年龄;
}
功能getName(){
返回_name美元->;
}
功能getAge(){
返回_age美元->;
}
}
>
如果我们要实例化这个类,情况就是这样。
$ U =新用户('xiao明,19);
一般来说,如果这个类很少被使用,它没有很多事情要做,而且非常好。
突然我想把这个类的分类增加,在明组学生中,修改类代码是很容易的,但是如果我们想在这个类中多次修改并在文件的多个部分实例化之前,那么想添加一个参数就会变得非常繁琐,因为需要更换:
$ U =新用户('xiao明,19,学生);
当然,我们也可以通过设置来避免重复工作的__construct功能默认,但事实上,从优雅的代码的角度看是不好的,假设我们有一个工厂方法通过标识对应的一组参数,并将参数存储在一个文本文件或直接在数组存储在工厂类的形式,我们称之为用户级时将变得更加容易,甚至需要改变的参数,不需要更换物业代码随处可见,这里是一个工厂类(也可以直接存储在用户类的方法)
复制代码代码如下所示:
IUser {接口
getName()函数;
getAge()函数;
}
类用户实现了IUser {
保护_group美元;
保护_name美元;
保护_age美元;
功能__construct($name美元美元,年龄组){
美元-> _group = $组;
美元-> _name = $名称;
美元-> _age =(int)$的年龄;
}
功能getName(){
返回_name美元->;
}
功能getAge(){
返回_age美元->;
}
}
类器{
私有静态组=数组(
阵列('xiao明,19,学生),
阵列('xiao王,19,学生)
);
静态函数创建($ id){
列表(名称,$年龄,$组)=:$ {(int)$ };
返回新用户(姓名,年龄,$组);
}
}
定影:回声:创建(0)-> getName();
结果应该是输出萧明。