`
zhangchibang
  • 浏览: 345085 次
社区版块
存档分类
最新评论

工厂模式:工厂方法——用PHP改写head first中的例子

PHP 
阅读更多
工厂方法(Factory Method)模式是指:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到了子类。在这个例子中,生产何种pizza是在继承了抽象类的子类中进行的。
Pizza类
<?php

	abstract class Pizza {
		public $name;
		public $dough;
		public $sauce;
		
		function prepare() {
			echo 'Preparing '.$this->name.'<br />';
			echo 'Tossing dough...<br />';
			echo 'Adding sause...<br />';
		}
		
		function bake() {
			echo 'Bake for 25 minutes at 350';
		}
		
		function cut() {
			echo 'Cutting the pizza into diagonal slices';
		}
		
		function box() {
			echo 'Place pizza in official PizzaStore box';
		}
		
		function getName() {
			echo  $this->name;
		}
	}

?>

 

PizzaStore类

<?php
 abstract class PizzaStore {
  abstract function createPizza($type);
  
  public function orderPizza($type) {
   $pizza = $this->createPizza($type);
   $pizza->prepare();
   $pizza->bake();
   $pizza->cut();
   $pizza->box();
   return $pizza;
  }
 }

?>

 

 

NYPizzaStore类

<?php

	class NYPizzaStore extends PizzaStore {
		function createPizza($type) {
			if($type == 'cheese') {
				return new NYStyleCheesePizza();
			} elseif ($type == 'pepperioni') {
				return new NYStylePepperioniPizza();
			} elseif ($type == 'clam') {
				return new NYSytleClamPizza();
			} elseif ($type == 'veggie') {
				return new NYSytleVeggiePizza();
			}
		}
	}

?>

  

NYStyleCheesePizza 类

<?php

class NYStyleCheesePizza extends Pizza {
	public function __construct() {
		$this->name = '"NY Style Sauce and Cheese Pizza';
		$this->dough = "Thin Crust Dough";
		$this->sauce = "Marinara Sauce";
	}
}

?>

 

客户

<?php
	include_once 'Pizza.php';
	include_once 'PizzaStore.php';
	include_once 'NYPizzaStore.php';
	include_once 'NYStyleCheesePizza.php';
	
	$pizzaStore = new NYPizzaStore();
	$pizza = $pizzaStore->orderPizza('cheese');
	$pizza->getName();
?>

 

分享到:
评论

相关推荐

    我的程序————MP3标签改写

    MP3标签改写是音乐爱好者经常遇到的问题,尤其是在整理个人音乐库时。MP3标签包含了歌曲的各种元数据,如艺术家、专辑、曲目标题、发行年份、流派等,这些信息有助于我们更好地管理和播放音乐。Java作为一种强大的...

    软件设计与体系结构-工厂模式实验.doc

    在本实验中,我们使用工厂方法模式来实现抽象的运算类和加减乘除运算子类。 四、抽象工厂模式 抽象工厂模式是一种最复杂的工厂模式,它提供了一种方法来封装对象创建的逻辑。抽象工厂模式的核心思想是将对象创建的...

    Eclipse快捷键指南

    - **改写切换**:`Insert` —— 在插入模式和覆盖模式之间切换。 - **上滚行**:`Ctrl+↑` —— 上滚一行。 - **下滚行**:`Ctrl+↓` —— 下滚一行。 #### 七、文件管理类快捷键 **1. 文件操作** - **保存**:`...

    最新青岛版五四制小学数学三年级(下册)教材分析报告.doc

    **第四单元:家具中的学问——小数的初步认识** 本单元引入小数,让学生理解小数的意义,学会比较小数的大小,以及进行一位小数的加减运算。 **第五单元:繁忙的工地——线和角** 本单元涵盖了线段、直线和射线的...

    利用简单工厂模式,实现简易计算器程序

    【简单工厂模式】是一种常用的创建型设计模式,它提供了一个创建对象的接口,但让子类决定实例化哪一个类。简单工厂模式使代码能够绕过复杂的实例化逻辑,将对象的创建过程封装起来,使客户端代码更加简洁。 在这个...

    HeadFirst设计模式(Delphi代码)

    《HeadFirst设计模式(Delphi代码)》是本人在学习这本书的过程中的练习代码,依据书中的Java实例用Delphi改写而成。 http://www.cnblogs.com/DelphiDesignPatterns/ guzh-0417@163.com

    作文教案——改写古诗词.pdf

    作文教案——改写古诗词.pdf

    C++实现HeadFirst策略模式设计模式

     Head First设计模式中介绍策略模式时以Duck类作为样例。当中用flyBehavior和quackBehavior两个接口引用变量代表鸭子飞行和鸭子叫这两种行为,通过改变flyBehavior和quackBehavior来满足不同的Duck子类的不同行为...

    小学语文专项复习——句子改写PPT课件.pptx

    小学语文中的句子改写是一项重要的语言技能,旨在帮助学生更好地理解和运用汉语,增强语言表达的灵活性。本课件主要涵盖了六个关键的知识点: 1. 扩句和缩句:扩句是在句子的主要成分前添加形容词、副词或其他修饰...

    写作:扩写、缩写、续写和改写[宣贯].ppt

    写作是语言艺术的重要组成部分,而扩写、缩写、续写和改写是写作中常用的四种技巧。下面我们将详细地介绍这四种技巧的定义、特点和应用实例。 扩写是指对原文进行扩展、充实和深化,把简略的原文扩展成符合要求的...

    五年级语文:专项——阅读训练.doc

    【五年级语文:专项——阅读训练】 这篇文档是针对五年级学生的语文阅读训练材料,主要包含了一篇描绘早春景色的散文和相关的语文练习题。文章以细腻的笔触描绘了春天到来时的自然景象,如春风、融冰、鸭子戏水、...

    在Word2021中使用Insert键控制改写模式.docx

    ### Word2021中使用Insert键控制改写模式的知识点 #### 一、改写模式与插入模式的概念 在Microsoft Word2021中,提供了两种文本输入方式:**改写模式**与**插入模式**。这两种模式的切换主要通过Insert键来实现。 ...

    小学语文专项复习——句子改写PPT学习教案.pptx

    小学语文专项复习中的句子改写是一项重要的教学内容,旨在帮助学生掌握如何通过增删词语、变换句式来丰富表达和简化语句。扩句和缩句是基础的改写技巧,扩句是增加修饰词,使句子更具描述性和生动性,而缩句则是去除...

    PHPWeb开发技术指南——pdf格式

    8.3.4 在MarketPlayer.com产品开发中使用PHP的优势 217 8.3.5 PHP实际生活中的竞争 218 8.3.6 会话 218 8.3.7 PHP服务器集成 219 8.3.8 代码管理 219 8.3.9 前景 219 8.4 小结 219 8.5 参考 220 第三部分 深入研究...

    改写ARToolKit5.4例子simpleLite的MFC单文档程序

    在这个项目中,我们看到的是一个将ARToolKit5.4的简单示例"simpleLite"改写为MFC(Microsoft Foundation Classes)单文档界面(SDI)程序的过程。MFC是微软提供的一套C++类库,用于简化Windows应用程序的开发,而SDI...

    个人银行管理程序——c++ 到 Java程序的改写_3

    本资源对应博客个人银行管理程序——c++到java程序的改写_3,压缩包中包含所有的c++和java源代码,欢迎大家下载查阅使用。

    大话模式中的Stategy模式用C++改写

    《大话模式》是一本经典的面向对象设计模式的书籍,其中介绍了多种设计模式,包括Strategy模式。Strategy模式是一种行为设计模式,它使你能在运行时改变对象的行为。在这个模式中,一个类的行为或其算法可以在运行时...

    2017全球人力资本趋势——改写数字化时代的规则.rar

    《2017全球人力资本趋势——改写数字化时代的规则》是针对当今信息化社会中人力资源管理面临的新挑战和变革的一份重要研究报告。这份报告深入探讨了随着数字化技术的快速发展,如何重新定义和优化人力资本的管理和...

Global site tag (gtag.js) - Google Analytics