<?php require_once 'Beverages/DarkRoast.php'; require_once 'Beverages/Decaf.php'; require_once 'Beverages/Espresso.php'; require_once 'Beverages/HouseBlend.php'; require_once 'Condiments/Milk.php'; require_once 'Condiments/Mocha.php'; require_once 'Condiments/Soy.php'; require_once 'Condiments/Whip.php'; $beverage = new Espresso(); echo $beverage->getDescription() . ' $' . $beverage->cost(); $beverage = null; echo "<hr/>"; $beverage = new HouseBlend(); $beverage = new Soy($beverage); $beverage = new Mocha($beverage); echo $beverage->getDescription() . ' $' . $beverage->cost(); $beverage = null; echo "<hr/>"; $beverage = new Decaf(); $beverage = new Milk($beverage); $beverage = new Milk($beverage); echo $beverage->getDescription() . ' $' . $beverage->cost(); $beverage = null;
<?php require_once 'Beverage.php'; require_once 'CondimentDecorator.php'; require_once 'DarkRoast.php'; require_once 'Decaf.php'; require_once 'Espresso.php'; require_once 'HouseBlend.php'; require_once 'Mocha.php'; require_once 'Soy.php'; require_once 'Whip.php'; $dark_roast = new DarkRoast(); $espresso = new Espresso(); $decaf = new Decaf(); $house_blend = new HouseBlend(); $mocha = new Mocha($dark_roast); $double_mocha = new Mocha($mocha); $espresso_soy = new Soy($espresso); $espresso_soy_mocha = new Mocha($espresso_soy); echo "description " . $double_mocha->getDescription() . "===price : " . $double_mocha->cost() . "\$\n"; echo "description " . $espresso_soy->getDescription() . "===price : " . $espresso_soy->cost() . "\$\n"; echo "description " . $espresso_soy_mocha->getDescription() . "===price : " . $espresso_soy_mocha->cost() . "\$\n";
public function cost() { return 0.2 + $this->beverage->cost(); } } println(); $deverage1 = new Espresso(); $deverage1 = new Milk1($deverage1); $deverage1 = new Mocha($deverage1); $deverage1 = new Mocha($deverage1); println($deverage1->getDescription(), $deverage1->cost()); println(); $deverage2 = new HouseBlend1(); $deverage2 = new Milk1($deverage2); $deverage2 = new Mocha($deverage2); println($deverage2->getDescription(), $deverage2->cost()); /** * 输出: Espresso, milk, Mocha, Mocha 2.49 HouseBlend, milk, Mocha 1.19 */ println(SEPARATE, 'END', SEPARATE); #--------------------------------------- END --------------------------------------------- println(); #--------------------------------------- 工厂模式 --------------------------------------------- #披萨 #模式四:工厂模式: #工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到了子类