快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Java模式--工厂模式的简朴用例

 

工厂模式是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对象的创建都是一条生产线,那么我们用一个工厂将多个生产线封装起来了,从而用户就好比只与工厂传达室的人打交道,告诉他请你们工厂生产一种什么产品,而不是与每一条生产线打交道--这样说来当然是有好处的。
        敬请各位发表评论:)





返回类别: 教程
上一教程: 如何提高自己的编程水平
下一教程: Declarations and Access Control (1)

您可以阅读与"Java模式--工厂模式的简朴用例"相关的教程:
· 《java与模式》----创建模式系列工厂模式、单态模式精讲
· 一个体现Java接口及工厂模式长处的例子
· Java模式学习一、简朴工厂
· 《java与模式》读书笔记 ----模式设计的原则
· java设计模式之创建模式--singleton
    微笑服务 优质保证 索取样品