浏览 4175 次
锁定老帖子 主题:工厂模式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-10
最后修改:2012-08-10
工厂模式:“工厂”生活中是生产东西的地方,在Java世界里工厂是生产对象实例的。
工厂的作用:使代码与实现类分离,这样方便我们替换实现。 工厂的动作:选择实现——根据条件提供对应的对象实例。 这几天学习了下《Thinking in Java》中“接口”这个章节。觉得该章中关于工厂的设计例子蛮有意思的,参照它写了如下一个例子: public interface Cycle { public void run(); } public class UniCycle implements Cycle { @Override public void run() { // TODO Auto-generated method stub System.out.println("Cycle Run"); } } public class BiCycle implements Cycle { @Override public void run() { // TODO Auto-generated method stub System.out.println("BiCycle Run"); } } public class TriCycle implements Cycle { @Override public void run() { // TODO Auto-generated method stub System.out.println("TriCycle Run"); } } 下面是工厂: public interface CycleFactory { public Cycle getCycle(); } public class UniCycleFactory implements CycleFactory { @Override public Cycle getCycle() { // TODO Auto-generated method stub return new UniCycle(); } } public class BiCycleFactory implements CycleFactory { @Override public Cycle getCycle() { // TODO Auto-generated method stub return new BiCycle(); } } public class TriCycleFactory implements CycleFactory { @Override public Cycle getCycle() { // TODO Auto-generated method stub return new TriCycle(); } } 测试代码: public class FactoryTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub run(new UniCycleFactory().getCycle()); run(new BiCycleFactory().getCycle()); run(new TriCycleFactory().getCycle()); run(new UniCycleFactory()); run(new BiCycleFactory()); run(new TriCycleFactory()); } public static void run(Cycle cycle){ cycle.run(); } public static void run(CycleFactory cycleFactory){ Cycle cycle = cycleFactory.getCycle(); cycle.run(); } } 运行结果: Cycle Run BiCycle Run TriCycle Run Cycle Run BiCycle Run TriCycle Run 感觉这样设计工厂有点做作,可能为了强调“接口”吧 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-08-11
表示没看出有什么好处
|
|
返回顶楼 | |
发表时间:2012-08-20
看工厂模式的时候也是有这种感觉,貌似没啥意义的感觉,但看实际项目代码,貌似这样写会比较清晰些,而且每个工厂类实现的东西没那么简单
|
|
返回顶楼 | |
发表时间:2012-08-27
书上的就是个简单例子啊!
|
|
返回顶楼 | |
发表时间:2012-10-15
工厂类中可以写一个switch-case循环,根据传过来参数的不同从而返回具体的实现类
|
|
返回顶楼 | |