浏览 3041 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-24
最后修改:2009-06-24
零件工厂接口 public interface PartFactory { public Window createWindow(); public Glass createGlass(); } 零件接口类,让对象更加抽象化 public interface Product { public String name(); } 零件-窗 public interface Window extends Product { } 零件-玻璃 public interface Glass extends Product{ } A工厂生产的玻璃 public class AGlass implements Glass { @Override public String name() { // TODO Auto-generated method stub return "it is a factory glass"; } } A工厂生产的窗 public class AWindow implements Window { public String name(){ return "it is a factory window"; } } B工厂生产的玻璃 public class BGlass implements Glass { @Override public String name() { // TODO Auto-generated method stub return "it is b factory glass"; } } B工厂生产的窗 public class BWindow implements Window { @Override public String name() { // TODO Auto-generated method stub return "it is b factory window"; } } A工厂 public class APartFactory implements PartFactory { @Override public Glass createGlass() { // TODO Auto-generated method stub return new AGlass(); } @Override public Window createWindow() { // TODO Auto-generated method stub return new AWindow(); } } B工厂 public class BPartFactory implements PartFactory { @Override public Glass createGlass() { // TODO Auto-generated method stub return new BGlass(); } @Override public Window createWindow() { // TODO Auto-generated method stub return new BWindow(); } } 房子 public class House { private Window window; private Glass glass; public House(Window window,Glass glass){ this.glass = glass; this.window = window; } @Override public String toString() { // TODO Auto-generated method stub return window.name()+" / "+ glass.name(); } } 测试类 public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub PartFactory aFactory = new APartFactory(); PartFactory bFactory = new BPartFactory(); //A工厂零件房子 House ahouse = new House(aFactory.createWindow(),aFactory.createGlass()); //B工厂零件房子 House bhouse = new House(bFactory.createWindow(),bFactory.createGlass()); System.out.println(ahouse); System.out.println(bhouse); } } 设计原则 依赖抽象,不要依赖具体的抽象. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-24
挺好的例子,可以用来做入门的例子。讲给新手听听。
|
|
返回顶楼 | |
发表时间:2009-06-24
linsongbin1 写道 挺好的例子,可以用来做入门的例子。讲给新手听听。
是啊,第二遍看这本书了收获很大,第一遍了解,第二遍理解. |
|
返回顶楼 | |
发表时间:2009-06-24
这种例子网上多的是,
而且全是代码,一点心得与体会都没有,刷积分也要刷得有技术含量一点嘛? |
|
返回顶楼 | |
发表时间:2009-06-24
fansofjava 写道 这种例子网上多的是,
而且全是代码,一点心得与体会都没有,刷积分也要刷得有技术含量一点嘛? 这些代码是我看书以后写的,我相信再多的文字说明也没有实例来的快.对新手来可能有点不了解真的含义.但是对老手则是对这个模式的回顾与恐固. 写这个文章主要是自己备忘,发布到论坛是让大家一起回顾. 这位仁兄,做人要厚道.难道我为了10分,粘贴复制花掉十分钟.再说这些代码都是我自己写的.不是从网上转过来的. 文章写的不好是别外一回事,不好我接受砖头. |
|
返回顶楼 | |
发表时间:2009-06-25
有没有实际的应用?就是指实际这个工厂模式的项目应该,这些基础的确在网上一搜索都是,现在我想找个项目应用的抽象工厂。
|
|
返回顶楼 | |
发表时间:2009-06-25
donald 写道 有没有实际的应用?就是指实际这个工厂模式的项目应该,这些基础的确在网上一搜索都是,现在我想找个项目应用的抽象工厂。
我想只要是你理解了这个模式,自己写一个也不会有多大的问题. |
|
返回顶楼 | |