讨鬼传草雉剑:传智播客——JSP(四)工厂模式 - chusheng2009的专栏 - CSDN博客
来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 12:56:21
一:工厂模式出现的原因 一般设计模式:
view plaincopy to clipboardprint?
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("**吃苹果**") ;
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("**吃橘子**") ;
}
}
public class FactoryDemo01{
public static void main(String args[]){
Fruit f = new Apple();
f.eat();
}
}
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("**吃苹果**") ;
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("**吃橘子**") ;
}
}
public class FactoryDemo01{
public static void main(String args[]){
Fruit f = new Apple();
f.eat();
}
}
在这种普通的编码方式中,后续的扩展功能将是灾难,当有新的水果类增加时,必须翻出源码进行修改,这对于一个庞大的项目来说将需要耗费巨大的人力和物力,工厂模式就是为了解决这一问题而出现的设计模式。
二,工厂设计模式
在Java中主方法就类似于一个客户端,当子类发生变化时,就必须要在客户端里改变声明的对象和类。这使得客户端和子类就紧密的耦合在一起,因此,如果在子类发生改变时,客户端也要发生相应的改在程序中加入一个工厂,使得子类的声明在工厂内发生,然后再把声明后的对象返回到客户端中这样就避免了客户端与子类耦合的发生。
三,简单工厂模式
根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的过程不同,而且根据不同的数据进行了优化。简单工厂模式可以作为工厂方法模式的一个引导。
public class Factory {
public static Fruit factory(String canshu) {
if (canshu.equals("Apple")) {
return new Apple();
} else if (canshu.equals("Strawberry")) {
return new Strawberry();
} else if (canshu.equals("Lichee")) {
return new Lichee();
} else {
return null;
}
}
}
学习总结:工厂模式可以看做是MVC设计模式中的M层即MODEL层的具体设计方法,但工厂模式并不是就是如上所述那样简单,设计模式是设计思想的提炼,可大可小,以后将要讲的抽象工厂模式在逻辑上就比较复杂了 发表于 @ 2010年02月02日 21:52:00 | 评论( 0 ) | 编辑| 举报| 收藏 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chusheng2009/archive/2010/02/02/5282877.aspx
view plaincopy to clipboardprint?
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("**吃苹果**") ;
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("**吃橘子**") ;
}
}
public class FactoryDemo01{
public static void main(String args[]){
Fruit f = new Apple();
f.eat();
}
}
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("**吃苹果**") ;
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("**吃橘子**") ;
}
}
public class FactoryDemo01{
public static void main(String args[]){
Fruit f = new Apple();
f.eat();
}
}
在这种普通的编码方式中,后续的扩展功能将是灾难,当有新的水果类增加时,必须翻出源码进行修改,这对于一个庞大的项目来说将需要耗费巨大的人力和物力,工厂模式就是为了解决这一问题而出现的设计模式。
二,工厂设计模式
在Java中主方法就类似于一个客户端,当子类发生变化时,就必须要在客户端里改变声明的对象和类。这使得客户端和子类就紧密的耦合在一起,因此,如果在子类发生改变时,客户端也要发生相应的改在程序中加入一个工厂,使得子类的声明在工厂内发生,然后再把声明后的对象返回到客户端中这样就避免了客户端与子类耦合的发生。
三,简单工厂模式
根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的过程不同,而且根据不同的数据进行了优化。简单工厂模式可以作为工厂方法模式的一个引导。
public class Factory {
public static Fruit factory(String canshu) {
if (canshu.equals("Apple")) {
return new Apple();
} else if (canshu.equals("Strawberry")) {
return new Strawberry();
} else if (canshu.equals("Lichee")) {
return new Lichee();
} else {
return null;
}
}
}
学习总结:工厂模式可以看做是MVC设计模式中的M层即MODEL层的具体设计方法,但工厂模式并不是就是如上所述那样简单,设计模式是设计思想的提炼,可大可小,以后将要讲的抽象工厂模式在逻辑上就比较复杂了 发表于 @ 2010年02月02日 21:52:00 | 评论( 0 ) | 编辑| 举报| 收藏 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chusheng2009/archive/2010/02/02/5282877.aspx
传智播客——JSP(四)工厂模式 - chusheng2009的专栏 - CSDN博客
(四)多对多模式 - 数据库模型设计专栏 - CSDN博客
bbbbbbj的专栏 - CSDN博客
SavePoint (bzszp ) - bzszp的专栏 - CSDN博客
vc++ - lonelytreebjfu的专栏 - CSDN博客
ASCII码表 - heruibin的专栏 - CSDN博客
tcp cwnd - linweixuan的专栏 - CSDN博客
RTMP是什么 - Thinkor2k8的专栏 - CSDN博客
手机知识 - whpeace的专栏 - CSDN博客
指针Guide - chinahai的专栏 - CSDN博客
数据库触发器 - chinayuan的专栏 - CSDN博客
中国式管理 - wmnothing的专栏 - CSDN博客
IE捉迷藏 - bluesqsr的专栏 - CSDN博客
35个英文四级句子 - r55wen的专栏 - CSDN博客
Android模拟器上实现Sensor测试(1)——环境的配置 - henry000的专栏 - CSDN博客
C#处理文本文件的常用操作(转) - sluggard的专栏 - CSDN博客
C 中Reference与指针(Pointer)的使用对比 - wu928320442的专栏 - CSDN博客
C2连续的三次B样条插值(c++) - coolend的专栏 - CSDN博客
数据库设计的黄金经验(转) - szg3827的专栏 - CSDN博客
USB有关的编程 - sanshao27的专栏 - CSDN博客
一篇很实用的入门教程 - ph9527的专栏 - CSDN博客
软件开发的效率 - wmnothing的专栏 - CSDN博客
VB的浮点数处理 - zdingyun的专栏 - CSDN博客
程序员的面包 - ShaHuShaBoJue的专栏 - CSDN博客