通常,您可以使用工厂从特定实现中抽象出来.如果您使用新的< classname>运算符,每次都实例化一个特定的类.如果要在以后将此类与其他实现交换,则必须手动更改每个新语句.

工厂模式允许您从特定类中抽象.有效的最小用例可能是这样的:

interface UserInterface {

public function getName();

}

class UserImplementationA implements UserInterface {

private $name;

public function getName() { return $this->name; }

}

class UserImplementationB implements UserInterface {

public function getName() { return "Fritz"; }

}

class UserFactory {

public function createUser() {

if (/* some condition */) return new UserImplementationA();

else return new UserImplementationB();

}

}

$f = new UserFactory();

$u = $f->createUser(); // At this point, you don't really have to care

// whether $u is an UserImplementationA or

// UserImplementationB, you can just treat it as

// an instance of UserInterface.

当这变得非常有用时,一个用例(很多)是在进行单元测试时.在测试驱动开发中,您经常使用模拟对象(实现特定接口但实际上没有做任何事情的对象)替换类的依赖关系.使用工厂模式,使用模拟类透明地替换特定类很容易.

对象工厂PHP,php – 域对象工厂是什么样的?相关推荐

  1. jaxb 映射 空字段_推土机:将JAXB对象映射到业务/域对象

    jaxb 映射 空字段 Dozer是开放源代码( Apache 2许可 )" Java Bean到Java Bean映射器,可将数据从一个对象递归复制到另一个对象". 正如从其主页 ...

  2. 推土机:将JAXB对象映射到业务/域对象

    Dozer是开放源代码( Apache 2许可 )" Java Bean到Java Bean映射器,可将数据从一个对象递归复制到另一个对象". 正如从其主页上的描述所描述的那样,它 ...

  3. orika 映射非空字段_Orika:将JAXB对象映射到业务/域对象

    orika 映射非空字段 这篇文章着眼于使用Orika将JAXB对象映射到业务域对象. 本月初, 我使用基于反射的Dozer讨论 了相同的映射用例 . 在本文中,我假设需要映射相同的示例类,但是它们将 ...

  4. Orika:将JAXB对象映射到业务/域对象

    这篇文章着眼于使用Orika将JAXB对象映射到业务域对象. 本月初, 我使用基于反射的Dozer讨论 了相同的映射用例 . 在本文中,我假设需要映射相同的示例类,但是它们将使用Orika而不是Doz ...

  5. javaweb——jsp(jsp的本质是什么、jsp九大内置对象、四个域对象、jsp的主要作用)

    1.什么是jsp,它有什么用? jsp的全称是java server pages.Java 的服务器页面. jsp的主要作用是代替Servlet 程序回传html页面的数据. 因为Servlet 程序 ...

  6. JSP九大内置对象及其作用+四大域对象

    JSP九大内置对象及其作用+四大域对象 一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp ...

  7. 九大内置对象及四个域对象的总结

    九大内置对象 指在JSP的<%=%> 和<% %>中可以直接使用的对象:没有特别说明可以开关的默认是开启的 pageContext(重要) 1.本身也是一个域对象:它可以操作其 ...

  8. Servlet中三大域对象详解----[笔记]

    刚学javaWeb时对一些信息的获取有一些不懂,请求行获取的信息和请求域获取的信息有什么不一样的?除了方法不一样-但是搞清楚了原理,一切迎刃而解;如果你也有疑惑,那就看看这篇文章吧! 请求行与请求域 ...

  9. SpringMVC---共享域对象数据

    我们在servlet里面学到,servlet里面一共有四个域对象,四个域对象分别是page对象,request对象,session对象,application对象,四个域对象作用范围从小到大是page ...

最新文章

  1. 关于如何开办餐饮店?
  2. HTTP API 设计指南(基础部分)
  3. 了解JavaScript核心精髓(三)
  4. 服务器账号密码更改,如何更改服务器用户名和密码
  5. 深度探索C++ 对象模型(7)-Data member的布局(多重继承)
  6. 关于PChar(@string)的疑惑
  7. 不进行格式化将U盘快速转换为NTFS格式
  8. java把收集的数据节点_java面试题收集(04)
  9. ngxin做http强制跳转https,接口的POST请求变成了GET
  10. 转 linux shell 数组建立及使用技巧
  11. 单场淘汰制场次计算方法_校园足球联赛赛制的设计与编排
  12. c 语言实现链表反转(超详细,有手就行)
  13. QuickTime Component实例
  14. 红米note3总显示无服务器,红米note3死机了怎么办 具体解决措施【图文】
  15. 爬虫技术(02)神箭手爬虫实时API
  16. 从身份证号里可以解析出出生地,年月日,性别及年龄
  17. 使用华为云Linux宝塔面板搭建网站+遇到的报错解决
  18. 彩色图像去马赛克与图像超分辨问题的关系
  19. FusionCharts.js代码
  20. 【微服务框架】SpringCloud之最全篇,java并发编程电子书

热门文章

  1. DT时代下 数据库灾备的探索与实践
  2. 基于阿里云移动推送的移动应用推送模式最佳实践
  3. 从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL 1
  4. 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能 1
  5. android 聊天背景图片,Android 实现从本地读取图片更改聊天背景
  6. 网站攻击软件_如何防止网站建设中出现安全问题?
  7. 三包围结构的字是什么样的_一年级语文重点(字、字母、字词、词语、句子)知识点汇总!...
  8. tomcat启动成功 未加载项目_喜讯!济宁医学院附属医院SPD项目成功启动
  9. 基于python的文件加密传输_基于python实现文件加密功能
  10. nacos未授权访问漏洞【原理扫描】