milo
发贴: 0
积分: 0
|
于 2003-12-18 15:18
FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口 味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。 麦当劳和肯德基就是生产鸡翅的Factory
下面是我写的一个代码For Factory
//鸡翅膀基类(ChickenWing.java) public abstract class ChickenWing { }
//麦当劳鸡翅膀子类(McChickenWing.java) public class McChickenWing extends ChickenWing { }
//KFC鸡翅膀子类(KfcChickenWing.java) public class KfcChickenWing extends ChickenWing { }
//麦当劳工厂 public class McFactory { public ChickenWing getChickenWing() { System.out.println("This is a Mcdonalds ChickenWing!"); return new McChickenWing(); } }
//KFC工厂 public class KfcFactory { public ChickenWing getChickenWing() { System.out.println("This is a KFC ChickenWing!"); return new KfcChickenWing(); }
}
//测试java文件 public abstract class Test {
public static void main(String[] args) { //new a Mc Factory McFactory objMcFactory=new McFactory(); //new a Kfc Factory KfcFactory objKfcFactory=new KfcFactory();
//if you and PLMM in Mcdonalds,she want to eat ChickenWing System.out.println("You and PLMM in Mcdonalds,She Want to eat ChickenWing. ..."); System.out.print("ChickenWing have be sent to you: "); objMcFactory.getChickenWing(); //if you and PLMM in KFC,she want to eat ChickenWing System.out.println("You and PLMM in KFC,She Want to eat ChickenWing....");
System.out.print("ChickenWing have be sent to you: "); objKfcFactory.getChickenWing();
}
}
输出结果: You and PLMM in Mcdonalds,She Want to eat ChickenWing....
ChickenWing have be sent to you: This is a Mcdonalds ChickenWing!
You and PLMM in KFC,She Want to eat ChickenWing....
ChickenWing have be sent to you: This is a KFC ChickenWing!
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。 消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如 :如何创建及如何向客户端提供
所以如果plmm要吃可乐或者薯条的话,除了客户端不变以外,工厂+产品都要变化, 不过这比硬编码好很多。。。 以后争取把所有追plmm的设计模式用代码写出来。。
|