生成对象---工厂方法模式
问题
当代码运行时我们才知道要生成的对象类型(BlogApptEncoder或者MegaBlogApptEncoder)
我们需要能够相对轻松的加入一些新的产品类型(如一种新业务处理方式SyncMl)
每一个产品类型都可定制特定的功能(getHeaderText()和getFooterText())
实现
<?php /*factory_method.php 工厂方法模式把创建者与要生产的产品类分离开, 创建者是一个工厂类,定义了用于生成产品对象的类方法, 如果没有提供默认实现,那就有创建者的子类来执行实例化 一般情况下创建者的每个子类实例化一个相应的产品子类 *///产品类 abstract class AppenCoder{abstract function encode(); }class BlogsAppEncoder extends AppenCoder{function encode(){return "Appointment data encode in Blogs";} }//创建者,工厂类(用于生成对象的类) abstract class CommonManager{abstract public function getHearText();//生成产品对象的类方法abstract public function getAppEncoder();abstract public function getFooterText(); }class BlogsManager extends CommonManager{public function getHearText(){return "BlogsCal header";}/*子类实例化一个产品子类*/public function getAppEncoder(){return new BlogsAppEncoder();}public function getFooterText(){return "BlogsCal Footer";} } $create = new BlogsManager(); $obj = $create->getAppEncoder();//得到一个生成的产品对象 echo $obj ->encode(); ?>
uml
结果
创建者类与产品的层次结构相似,导致特殊代码重复
导致不必要的子类化
转载于:https://www.cnblogs.com/rcjtom/p/6055066.html
生成对象---工厂方法模式相关推荐
- 简单工厂模式,工厂方法模式,抽象工厂方法的具体实现
1.题目分析 简单工厂模式:首先定义一个Nvwa的接口,里面定义一个show()的抽象方法.再定义Man.Woman和Robot三个类分别继承Nvwa这个接口,并重写show()方法.再定义一个cre ...
- 设计模式---3(工厂方法模式的概念,工厂方法模式的实现,工厂方法模式和简单工厂模式比较)
工厂方法模式 概念 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 . 工厂方法模式的意义 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责产品的创建,这样核 ...
- 研磨23种大话设计模式------简单工厂模式 + 工厂方法模式 + 抽象工厂模式
大家好,我是一位在java学习圈中不愿意透露姓名并苟且偷生的小学员,如果文章有错误之处,还望海涵,欢迎多多指正 如果你从本文 get 到有用的干货知识,请帮忙点个赞呗,据说点赞的都拿到了offer 简 ...
- 将实例的生成交给子类——工厂方法模式
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到子类. 工厂方法实现时,由客户端决定实例化哪个工厂来实现具体的产品类, ...
- 设计模式之工厂方法模式(Factory Method)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...
- android 工厂方法模式应用场景,Android设计模式(四)- 工厂方法模式
目录 定义 使用场景 UML 模式1 模式2 模式3 简单工厂模式静态工厂模式 简单实现 Android源码中的工厂方法 总结 优点 缺点 工厂方法模式也是创建型模式. 工厂模式根据抽象程度可以分为三 ...
- 设计模式之工厂方法模式学习笔记
定义 定义一个用于创建对象的接口,让子类去决定是实现哪个类.工厂方法使类的实例化,延迟到了子类. 结构图 角色拆解分析: 1.Product:抽象产品类 2.ConcrereProduct:具体产品类 ...
- 抽象工厂模式-与-工厂方法模式区别
转自:http://blog.csdn.net/wangwenhui11/article/details/3955125 --------------------------------- 对于jav ...
- 抽象工厂模式java_面试官:说一下静态工厂模式,工厂方法模式,抽象工厂的区别吧...
静态工厂模式 用生活中的场景类比一下这三种模式,假如你想学习Java视频,你得自己到处去找资料,找资料是一个繁琐的过程,过一段时间你又想学Python视频了,你还得去找资料.现在你在学校上学,你想学J ...
最新文章
- teach-es6-2(class)
- 速读训练软件_记忆力训练:如何提高注意力呢?
- android软件开发考试,Android软件工程师笔试题(全选择题)【0-1年经验】
- 用Python分析元旦旅游热门城市,告诉你哪些景点性价比更高
- mysql导出bacpac_数据库的迁移
- easyPR源码解析之ann_train.h/config.h
- Android内存泄漏的各种原因详解
- mysql-使用存储过程一次性批量创建多张表
- C - 查找回文质数
- java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南
- webpack分离打包css和less
- swagger - RESTFUL接口文档在线自动生成、代码自动生成工具详解
- 2011年Esri用户大会技术亮点总结之一:概览
- 解惑:Redis的HSCAN命令中COUNT参数的失效场景
- 如何通过Google学术快速获取参考文献引用格式-2021年
- 聋校计算机教学案例,聋校汉语拼音b、p的教学案例
- 问题记录:系统还原后,QQ显示一直登录中,但却登录不上去,而且很多软件无法使用
- elasticsearch OOM
- PDF预览完整解决方案及各种兼容(VUE版)
- 关于Fiddler使用和答疑