Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » 技术文章库  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 追MM与设计模式(Factory代码)
milo



发贴: 0
积分: 0
于 2003-12-18 15:18 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
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的设计模式用代码写出来。。



作者 Re:追MM与设计模式(Factory代码) [Re:milo]
深蓝



发贴: 0
积分: 0
于 2003-12-30 13:36 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有趣,不过看不懂


作者 Re:追MM与远程调用模式 [Re:milo]
深蓝



发贴: 0
积分: 0
于 2003-12-30 13:49 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
public interface 肯德鸡 extends Remote
{
public void MM() throws RemoteException;
}
public class 肯德鸡Impl extends UnicastRemoteObject implements 肯德鸡
{
public 肯德鸡Impl() throws RemoteException
{
super();
}
public void MM() throws RemoteException
{
String 鸡翅膀=new String("");
}
public static void main(String args[])
{
肯德鸡Impl MM =new 肯德鸡Impl ();
Naming.rebind("肯德鸡",MM);
System.out.println("请MM吃肯德鸡成功");
}
}
public class client
{
public static void main(String args[])
{
new client();
肯德鸡 鸡翅膀=(肯德鸡) Naming.lookup("rmi://肯德基/肯德鸡");
System.out.pritnln("找到MM,可以请她去吃肯德鸡了");
String Haha=鸡翅膀.MM();
System.out.pritnln("Haha,MM吃鸡翅膀的时候不小心噎着了。晕");
}
}



作者 Re:追MM与设计模式(Factory代码) [Re:milo]
goldwell



发贴: 0
积分: 0
于 2004-12-16 19:01 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有意思我也去弄一个.


作者 Re:追MM与设计模式(Factory代码) [Re:milo]
yunchenge





发贴: 1
积分: 0
于 2004-12-22 10:41 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有意思!!




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923