111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:3047回复:0

Java模式--工厂模式的简单用例-JSP教程,Java技巧及代码

楼主#
更多 发布于:2011-01-08 20:50
工厂模式是j2ee核心模式中较简单的一种,听说jive论坛中对数种设计模式有着广泛的应用,工厂模式也包括其中,本人就从该模式起步,希望有一天能对各种设计模式运用自如。

现给出一简单用例,模拟一火腿(ham)生产工厂,工厂能生产数种类型的ham,那么在创建了一个工厂实例后,只需要告诉他请你生产何种ham,他就会给你生产出来:
package test;

interface ham { //定义接口,用于辅助实现工厂模式
    void show();//由ham工厂生产出的各种ham将有show()的能力
}
public class fatorymodule {//工厂类,用于产品多种不同种类的ham
    public ham getham(string hamtype) throws exception{//工厂类对象生产ham的动作
        if (hamtype.equals("hama")) {
            return new hama();
        }
        else if (hamtype.equals("hamb")) {
            return new hamb();
        }
        else if (hamtype.equals("hamc")) {
            return new hamc();
        }
        else
            throw new exception();//如果该工厂收到生产某种ham的指令但暂不支持,则抛出异常
        
    }

   public static void main(string[] args) {//测试代码
        fatorymodule fatorymodule = new fatorymodule();
    try {
        ham myham = fatorymodule.getham("hamb");//能方便地创建各种类型的ham,而程式结构和代码的修改量达到最小
        myham.show();
    } catch (exception ex) {
        ex.printstacktrace();//应进一步处理异常
    }
    }
}

class hama implements ham { //工厂中生产的一种产品hama
    public void show() {
        system.out.println("you got a hama.");
    }
}

class hamb implements ham { //工厂生产的另一种产品hamb
    public void show() {
        system.out.println("you got a hamb.");
    }
}

class hamc implements ham { //工厂生产的第三种产品hamc
    public void show() {
        system.out.println("you got a hamc.");
    }
}
        通过程式的演示我得到了以下结论:

       由于应用了工厂模式,我只需要告诉工厂对象给我生产一种什么样的ham(即getham()方法中的参数),便能得到此类ham,而不用写hamx  hamx=new hamx(); 要是有数十种不同的ham对象需要在程式的不同地方被创建,那么使用工厂模式代码将显得简单而统一,每个需要不同ham的地方仅是getham()的参数不同。否则程式一旦需要扩展和维护,数十处的new语句将让人头痛。而如果需要添加新的ham类型,只需要在工厂类中添加即可。
        我还这样理解:如果说每种ham对象的创建都是一条生产线,那么我们用一个工厂将多个生产线封装起来了,从而用户就好比只和工厂传达室的人打交道,告诉他请你们工厂生产一种什么产品,而不是和每一条生产线打交道--这样说来当然是有好处的。
        敬请各位发表评论:)



更多黑客技术 黑客软件 计算机技术 编程技术 网站技术 qq技术 IT新闻 黑客基地 请访问 灯火安全联盟  灯火黑客 www.hack8888.com/bbs

喜欢0 评分0
游客

返回顶部