- 浏览: 122161 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
roychenyi:
<br>1<br>2<br> ...
pager-taglib 使用说明 -
roychenyi:
<br>换行<br>换行<br& ...
pager-taglib 使用说明 -
wangwenfei1985:
[flash=200,200][url][img][list] ...
pager-taglib 使用说明 -
时光后19:
,看到你这样真好,
FileNet调用webService配置 -
ysen:
大sql导入mysql
如果是SQL格式的。有的可能上100 ...
mysqldump备份详解
java 的switch 语句的case 匹配为什么不能像delphi一样 支持String类型 哦
这里可以通过反射的话效果更佳
// 女友工厂 public class DreamGirlCreatFactory { public static DreamGirl creatDreamGirl(String girlName){ if(girlName.equals("BeautifulGirl")){ return new BeautifulGirl(); }else if(girlName.equals("LivelyGirl")){ return new LivelyGirl(); } else if(girlName.equals("LooksMediocreGirl")){ return new LooksMediocreGirl(); }else if(girlName.equals("SensibleGirl")){ return new SensibleGirl(); } return null; } public static void main(String[] args){ String girlName1 = "BeautifulGirl"; String girlName2 = "LivelyGirl"; String girlName3 = "LooksMediocreGirl"; String girlName4 = "SensibleGirl"; String[] girlName = new String[4]; girlName[0]=girlName1; girlName[1]=girlName2; girlName[2]=girlName3; girlName[3]=girlName4; for(int i=0; i<4;i++){ DreamGirl girl = DreamGirlCreatFactory.creatDreamGirl( girlName[i]); girl.can_do_something_for_boy(); } } }
下面是创建的对象的 接口
//基类 public class DreamGirl { public void can_do_something_for_boy(){ } }
下面都是具体实现
public class BeautifulGirl extends DreamGirl { public void can_do_something_for_boy() { System.out.println("陪老公逛街!!!"); } }
public class LivelyGirl extends DreamGirl { public void can_do_something_for_boy() { System.out.println("陪老公聊天!!!"); } }
public class LooksMediocreGirl extends DreamGirl { public void can_do_something_for_boy() { System.out.println("给老公做饭!!!"); } }
public class SensibleGirl extends DreamGirl { public void can_do_something_for_boy() { System.out.println("给老公洗衣服!!!"); } }
评论
18 楼
wujiazhao88
2009-12-10
话说起来JAVA7怎么有点像C#了,支持string的switch了。。
17 楼
treblesoftware
2009-12-09
zhao_xiao_dong 写道
我一直对工厂模式没有一个好的理解,它的意思何在?
小弟经验不太足,望高手给个好的答案,最好举个例子哈!
小弟经验不太足,望高手给个好的答案,最好举个例子哈!
如果你代码到处使用new A();
此时,如果你的对象不叫A,叫A2。
那么,这个时候你的代码里只要有new A();的地方都修要修改成new A2();这样一来,你要修改很多地方,当然,现在IDE一般支持自动重构,设计模式是很多年前的东西了,那个时候没有这么聪明的IDE。另外,普通工厂作用不大,更多是面向接口的,或者是抽象的。
16 楼
zhao_xiao_dong
2009-12-09
我一直对工厂模式没有一个好的理解,它的意思何在?
小弟经验不太足,望高手给个好的答案,最好举个例子哈!
小弟经验不太足,望高手给个好的答案,最好举个例子哈!
15 楼
ysen
2009-12-09
treblesoftware 写道
grunt1223 写道
jasonw 写道
意义何在? 解决了什么问题? 要添加新女友还必须修改factory....而且像其他人提出的那样,用string作这个是非常不好的。 要用enum. 可以参看effective java 1st/2nd edition.
不是用Pattern就好阿。。
不是用Pattern就好阿。。
恩,我的理解是,简单工厂主要是将散布在各处的对象创建过程统一到一个类当中,试想有多个类中都要用到这些女友,万一需要修改某个女友的具体实现,就不需要在各处代码中修改,只要在工厂里修改具体的实现即可。
PS:DI本质上也是工厂啊,只是它们帮你实现了
呵呵,工厂可以帮助你管理那些对象么?工厂只帮你生成对象。
管理对象spring不错
14 楼
treblesoftware
2009-12-09
grunt1223 写道
jasonw 写道
意义何在? 解决了什么问题? 要添加新女友还必须修改factory....而且像其他人提出的那样,用string作这个是非常不好的。 要用enum. 可以参看effective java 1st/2nd edition.
不是用Pattern就好阿。。
不是用Pattern就好阿。。
恩,我的理解是,简单工厂主要是将散布在各处的对象创建过程统一到一个类当中,试想有多个类中都要用到这些女友,万一需要修改某个女友的具体实现,就不需要在各处代码中修改,只要在工厂里修改具体的实现即可。
PS:DI本质上也是工厂啊,只是它们帮你实现了
呵呵,工厂可以帮助你管理那些对象么?工厂只帮你生成对象。
13 楼
grunt1223
2009-12-09
jasonw 写道
意义何在? 解决了什么问题? 要添加新女友还必须修改factory....而且像其他人提出的那样,用string作这个是非常不好的。 要用enum. 可以参看effective java 1st/2nd edition.
不是用Pattern就好阿。。
不是用Pattern就好阿。。
恩,我的理解是,简单工厂主要是将散布在各处的对象创建过程统一到一个类当中,试想有多个类中都要用到这些女友,万一需要修改某个女友的具体实现,就不需要在各处代码中修改,只要在工厂里修改具体的实现即可。
PS:DI本质上也是工厂啊,只是它们帮你实现了
12 楼
treblesoftware
2009-12-09
ysen 写道
jasonw 写道
意义何在? 解决了什么问题? 要添加新女友还必须修改factory....而且像其他人提出的那样,用string作这个是非常不好的。 要用enum. 可以参看effective java 1st/2nd edition.
不是用Pattern就好阿。。
不是用Pattern就好阿。。
简单工厂有它的优点也有缺点,没有完美的单独的设计模式,只有完美的设计模式的组合,我在工厂方法模式中,已经将这两种模式进行了对比
说个不好听的话,当DI加入JDK的时候,工厂还需要么?
11 楼
ysen
2009-12-08
jasonw 写道
意义何在? 解决了什么问题? 要添加新女友还必须修改factory....而且像其他人提出的那样,用string作这个是非常不好的。 要用enum. 可以参看effective java 1st/2nd edition.
不是用Pattern就好阿。。
不是用Pattern就好阿。。
简单工厂有它的优点也有缺点,没有完美的单独的设计模式,只有完美的设计模式的组合,我在工厂方法模式中,已经将这两种模式进行了对比
10 楼
whaosoft
2009-12-08
lz实现的是工厂模式中的简单工厂
9 楼
水车老大
2009-12-08
wangdgsc 写道
lz,你的女朋友多是多,不过都需要临时去找,不如先找好,放在那里,等要的时候直接去拿不更方便嘛,呵呵,而且这也有一个好处,一是一个可以一直的使用,而是多少有个限制,毕竟,到底是凡人嘛,不能太过了,差不多就好了,太多了会内在溢出
这时候是不是可以考虑建立一个 girl池啊
8 楼
jasonw
2009-12-08
意义何在? 解决了什么问题? 要添加新女友还必须修改factory....而且像其他人提出的那样,用string作这个是非常不好的。 要用enum. 可以参看effective java 1st/2nd edition.
不是用Pattern就好阿。。
不是用Pattern就好阿。。
7 楼
ysen
2009-12-07
wangdgsc 写道
lz,你的女朋友多是多,不过都需要临时去找,不如先找好,放在那里,等要的时候直接去拿不更方便嘛,呵呵,而且这也有一个好处,一是一个可以一直的使用,而是多少有个限制,毕竟,到底是凡人嘛,不能太过了,差不多就好了,太多了会内在溢出
这是简单工厂啦,你的要求应该是hankesi2000写到的抽象工厂方法嘿嘿
6 楼
wangdgsc
2009-12-07
lz,你的女朋友多是多,不过都需要临时去找,不如先找好,放在那里,等要的时候直接去拿不更方便嘛,呵呵,而且这也有一个好处,一是一个可以一直的使用,而是多少有个限制,毕竟,到底是凡人嘛,不能太过了,差不多就好了,太多了会内在溢出
5 楼
ysen
2009-12-07
hankesi2000 写道
建议LZ将每种类型的美女,再放到一个小的简单工厂里,然后把这些小工厂放到一个final的HashMap里,通过多态的方式处理,直接舍弃switch就行了。简单工厂如:
然后在DreamGirlCreatFactory 里放一个HashMap:
其他的美女跟这个类似,在使用时改为:
看起来感觉更好一些,只是比较复杂。。。
//接口: public interface GirlFactory{ DreamGirl creatDreamGirl(); } public class BeautifulGirlFactory implements GirlFactory{ public DreamGirl creatDreamGirl(){ return new BeautifulGirl(); } }
然后在DreamGirlCreatFactory 里放一个HashMap:
private final Map map = new HashMap(){ { put("BeautifulGirl",new BeautifulGirlFactory()); } };
其他的美女跟这个类似,在使用时改为:
public static DreamGirl creatDreamGirl(String girlName){ return map.get(girlName).creatDreamGirl();//可以做一些额外处理,在此简化 }
看起来感觉更好一些,只是比较复杂。。。
这个应该就是抽象工厂模式了
4 楼
hankesi2000
2009-12-07
建议LZ将每种类型的美女,再放到一个小的简单工厂里,然后把这些小工厂放到一个final的HashMap里,通过多态的方式处理,直接舍弃switch就行了。简单工厂如:
然后在DreamGirlCreatFactory 里放一个HashMap:
其他的美女跟这个类似,在使用时改为:
看起来感觉更好一些,只是比较复杂。。。
//接口: public interface GirlFactory{ DreamGirl creatDreamGirl(); } public class BeautifulGirlFactory implements GirlFactory{ public DreamGirl creatDreamGirl(){ return new BeautifulGirl(); } }
然后在DreamGirlCreatFactory 里放一个HashMap:
private final Map map = new HashMap(){ { put("BeautifulGirl",new BeautifulGirlFactory()); } };
其他的美女跟这个类似,在使用时改为:
public static DreamGirl creatDreamGirl(String girlName){ return map.get(girlName).creatDreamGirl();//可以做一些额外处理,在此简化 }
看起来感觉更好一些,只是比较复杂。。。
3 楼
jltest
2009-12-07
根据ls们总结
1.lz的例子更适合enum。
2.现在string可以作为case了。
1.lz的例子更适合enum。
2.现在string可以作为case了。
2 楼
魔力猫咪
2009-12-06
Java7就支持String作为Case了。
1 楼
oxromantic
2009-12-06
enum 还不够吗
发表评论
-
email 发送接口
2012-02-29 17:48 1526企业邮件发送有自己的发送平台,其它系统包括业务系统常常将发送邮 ... -
dom4j中的单例策略
2010-04-14 13:53 1569单例模式的实现方法有很多,饿汉和饱汉 ,Double-chec ... -
OOD原则
2010-03-09 16:51 1339单一职责原则(SRP) 就一个类而言,应该仅有一个引起它 ... -
GRASP(基于职责设计对象)
2010-03-09 16:41 1444GRASP(General Responsibility A ... -
女友的对话(中介者模式也叫调停者)
2010-01-02 20:40 902需要中介者对象作为通信控制平台 所操控的抽象对象 ... -
请假 加薪(职责链模式)
2009-12-30 20:50 1250学习笔记 职责链模式的结构 和装饰模式的结构是一样的。 ... -
如何换数据库(未使用任何框架)
2009-12-18 04:25 929因为之前使用的mysql 现在想转为Oracle实现 ... -
和女友的不愉快(访问者模式)
2009-12-13 13:59 1024老鸟飞过哈 最近和女友很不和,特此用段模式写下自己的状 ... -
起床做饭(观察者模式)
2009-12-10 23:02 1072//通知者 public class Boy { //状 ... -
朋友做客(外观模式或者门面模式)
2009-12-10 01:12 850老鸟飞过 package facade; /* ... -
城市的生活成本(模板方法)
2009-12-09 16:50 872public abstract class Boy { ... -
女友多的好处2(工厂方法)
2009-12-08 01:01 1406(老鸟略过) 之前的一篇简单方法模式连接地址 http:/ ... -
带女友干活(代理模式)
2009-12-06 23:22 1305老鸟跳过请跳过, 最近无聊,贴一些自己过去学习设计模式 ... -
老公爱吃的菜(策略模式)
2009-12-06 00:09 965将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起 ... -
陪她们依次去旅游(装饰模式)
2009-12-05 21:52 835//梦中情人 呵呵 public c ... -
不同的年龄阶段喜欢不同的女孩 (状态模式)
2009-12-05 21:32 1153讨媳妇的男孩 public class Boy { ...
相关推荐
在软件设计模式中,工厂模式是一种常用的创建型模式,它提供了一种创建对象的最佳方式。在PHP中,工厂模式能够帮助我们解耦代码,使得代码更具有灵活性和可扩展性。在这个例子中,我们将深入探讨如何使用工厂模式来...
想象一下,当你带女朋友去快餐店,无论是麦当劳还是肯德基,只需要简单地说一句“来四个鸡翅”,而不必关心具体是哪家的鸡翅,这是因为快餐店扮演了工厂的角色,客户只需提出需求,具体产品由工厂决定。此模式的优点...
比如,请女朋友吃汉堡时,您可以直接告诉她“我要一个汉堡”,至于是要牛肉汉堡还是鸡肉汉堡,则由女朋友根据自己的口味选择。这里,您扮演的是抽象工厂的角色,而具体的工厂(如麦当劳或肯德基)则负责根据客户的...
一个简单的C#WinForm窗体包含3个功能,由3个按钮分别实现: ...适合给哄女朋友开心或者用来表白,程序设计非常简单属于一看就会的内容,这个只是一个dome,后续计划有一个完善整合的哄女朋友开心的窗体程序
1. **Factory(工厂模式)**: - **比喻**:在追求女朋友的过程中,无论是麦当劳的鸡翅还是肯德基的鸡翅,都是美味的选择。这里,麦当劳和肯德基就像是工厂,你只需要告诉服务员你需要多少鸡翅,具体的制作过程则由...
在幽默的例子中,为女朋友拍摄专业照片可能需要使用多种摄影技巧,而外观模式可以提供一个简单的接口,让女朋友只需关注拍照结果,而不用关心具体的技术细节。在软件设计中,外观模式可以简化复杂的子系统,提供一个...
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用共同的接口来指向新创建的对象。 **案例解读**: 例如,当带着女友去快餐店吃东西时,无论是麦当劳还是肯德基,顾客只需要告诉服务员“来...
工厂模式是一种非常实用的设计模式,它通过提供一个创建对象的接口,将实例化工作委托给子类。这种方式的好处在于用户只需要知道所需产品的抽象类型,而无需了解具体的实现细节。例如,文章中提到的例子是:当你带着...
例如,当你带女朋友去快餐店,无论是麦当劳还是肯德基,只需要告诉服务员“我要四个鸡翅”,而不需要关心具体哪家店生产的鸡翅。 - **原理**: 在工厂模式中,客户类和工厂类是分离的。消费者只需要知道如何向工厂...
13、CHAIN OF RESPONSIBLEITY —晚上去上英语课,为了好开溜坐到了最后一排,哇,前面 、 坐了好几个漂亮的 MM 哎, 找张纸条, 写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”, 纸条就一个接一个的传上去了,...
**示例**:假设你有六个女朋友,她们的共同点就是都称呼你为“老公”,这意味着你就是这个家庭中的唯一老公,即“老公Singleton”。 **优点**: - 控制实例数量。 - 全局访问点。 **缺点**: - 单例模式通常被认为...
这就像工厂模式中,消费者只需要知道最终的产品是什么,而具体的实现细节则由工厂来处理。这种模式使得增加新的产品变得简单,只需要在工厂中添加相应的生产逻辑即可。 **2. 建造者模式(Builder)** 建造者模式...
抽象工厂模式是一种提供一系列相关或相互依赖对象的接口,而无需指定它们具体的类的设计模式。它关注的是创建一组相关的或相互依赖的对象,而非单个对象。 **应用场景:** 当你需要创建一组相关的产品族时,例如...
标签"表白女朋友 网页 情人节"表明这个项目具有浪漫和情感传达的目的,因此网页设计需要注重情感表达和用户体验。设计师可能需要运用浪漫色彩搭配,比如粉色、红色调,以及心形等爱情符号。同时,交互设计也需要考虑...
1. 工厂模式(Factory):就像在麦当劳或肯德基点餐,你只需要告诉服务员想要的食物,而无需关心食物是如何制作的。工厂模式将对象的创建过程封装起来,让使用者只需关注产品的使用,而不用关心产品的生产细节。 2....
标题中的“前端动效告白女朋友神器,网页HTML”指的是一个使用前端技术制作的互动告白页面,通过HTML、CSS和JavaScript实现动态效果,旨在给女朋友带来惊喜。这个项目的核心在于利用网页的交互性来表达情感,使得...
- **抽象工厂模式**:抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定其具体的类。例如,通过抽象工厂,用户可以在运行时选择是去麦当劳还是肯德基购买鸡翅,无需关心具体的品牌。 - **...
- **概念**:工厂模式是一种创建型设计模式,它提供的解决方案是定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 - **应用场景**:比如,你想请女孩吃饭,可以选择...