本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7577602
建立时间:2006年5月29日




[codehaus.org]『蚂蚁学模式』之实例化抽象工厂模式及碎言
软件技术

lhwork 发表于 2007/1/10 9:33:37

延续『蚂蚁学模式』之实例化简单工厂、工厂方法模式中工厂方法模式的实例。而这次,汽车厂(MotorFactory)有新的需求,不只要生产国产车(NativeMotor),还需要生产进口车(ForeignMotor)。这两种车都包括公交(Bus)和小轿车(Car)。1. com.cleversoft.designpatterns.abstractfactory.MotorFactory.java 500)this.width=500'> package  com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'> public   interface  MotorFactory  500)this.width=500'> {500)this.width=500'>500)this.width=500'>} 2. com.cleversoft.designpatterns.abstractfactory.NativeMotor.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class NativeMotor implements MotorFactory 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    public Car produceCar() 500)this.width=500'>{500)this.width=500'>        return new NativeCar();500)this.width=500'>    }500)this.width=500'>500)this.width=500'>500)this.width=500'>    public Bus produceBus() 500)this.width=500'>{500)this.width=500'>        return new NativeBus();500)this.width=500'>    }500)this.width=500'>}3. com.cleversoft.designpatterns.abstractfactory.ForeignMotor.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class ForeignMotor implements MotorFactory 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    public Car produceCar() 500)this.width=500'>{500)this.width=500'>        return new ForeignCar();500)this.width=500'>    }500)this.width=500'>500)this.width=500'>500)this.width=500'>    public Bus produceBus() 500)this.width=500'>{500)this.width=500'>        return new ForeignBus();500)this.width=500'>    }500)this.width=500'>}4. com.cleversoft.designpatterns.abstractfactory.Bus.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public interface Bus 500)this.width=500'>{500)this.width=500'>    public void run();500)this.width=500'>}5. com.cleversoft.designpatterns.abstractfactory.Car.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public interface Car 500)this.width=500'>{500)this.width=500'>    public void run();500)this.width=500'>}6. com.cleversoft.designpatterns.abstractfactory.ForeignBus.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class ForeignBus implements Bus 500)this.width=500'>{500)this.width=500'>500)this.width=500'>500)this.width=500'>    public ForeignBus() 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    }500)this.width=500'>500)this.width=500'>500)this.width=500'>    public void run() 500)this.width=500'>{500)this.width=500'>        System.out.println("This is a foreign bus!");500)this.width=500'>    }500)this.width=500'>}7. com.cleversoft.designpatterns.abstractfactory.ForeignCar.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class ForeignCar implements Car 500)this.width=500'>{500)this.width=500'>500)this.width=500'>500)this.width=500'>    public ForeignCar() 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    }500)this.width=500'>500)this.width=500'>500)this.width=500'>    public void run() 500)this.width=500'>{500)this.width=500'>        System.out.println("This is a foreign car!");500)this.width=500'>    }500)this.width=500'>}8. com.cleversoft.designpatterns.abstractfactory.NativeBus.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class NativeBus implements Bus 500)this.width=500'>{500)this.width=500'>500)this.width=500'>500)this.width=500'>    public NativeBus() 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    }500)this.width=500'>500)this.width=500'>500)this.width=500'>    public void run() 500)this.width=500'>{500)this.width=500'>        System.out.println("This is a native bus!");500)this.width=500'>    }500)this.width=500'>}9. com.cleversoft.designpatterns.abstractfactory.NativeCar.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class NativeCar implements Car 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    public NativeCar() 500)this.width=500'>{500)this.width=500'>500)this.width=500'>    }500)this.width=500'>500)this.width=500'>500)this.width=500'>    public void run() 500)this.width=500'>{500)this.width=500'>        System.out.println("This is a native car!");500)this.width=500'>    }500)this.width=500'>}10. com.cleversoft.designpatterns.abstractfactory.Main.java 500)this.width=500'>package com.cleversoft.designpatterns.abstractfactory;500)this.width=500'>500)this.width=500'>500)this.width=500'>public class Main 500)this.width=500'>{500)this.width=500'>500)this.width=500'>500)this.width=500'>    /** *//**500)this.width=500'>     * @param args500)this.width=500'>     */500)this.width=500'>500)this.width=500'>    public static void main(String[] args) 500)this.width=500'>{500)this.width=500'>        // TODO Auto-generated method stub500)this.width=500'>        Bus b = new ForeignMotor().produceBus();500)this.width=500'>        b.run();500)this.width=500'>        Car c = new NativeMotor().produceCar();500)this.width=500'>        c.run();500)this.width=500'>    }500)this.width=500'>500)this.width=500'>} 终于开始想通一些问题,500)this.width=500'>。也再次印证这样的道理:没有笨的读者,只有笨的作者。从分析的角度,你要做的无非是些抽象的活儿;从普通编程人员的角度,你要实现的是类似NativeBus.java的具体实现。这是差距,巨大的差距!会写实例以外的一些东西。参考资料:1. http://terrylee.cnblogs.com/archive/2005/12/13/295965.html2. 《Java与模式》


阅读全文(2718) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.070 second(s), page refreshed 144774755 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号