频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
由歌词引发的模式思考之上篇(FactoryMethod模式)
2013-05-05 08:14:21           
收藏   我要投稿

  “老张开车去东北 撞了 肇事司机耍流氓 跑了 多亏一个东北人 送到医院缝五针 好了 ……翠花,上酸菜”

    “老张开车去东北”,OK,这里如果我们刻意的用OO思想来看的话,老张这次是开车去的,下次就有很可能开飞机去的……这里请允许我刻意的这样的思考这个问题,因为刻意的这样思考,我们可以从这句话发现两个蕴含的设计模式,一个是FactoryMethod,一个是AbstractFactory。

 

一、FactoryMethod

 

    FactoryMethod模式

 

    OK,回到这句歌词,正如上面所说的,这次开车,下次开飞机……所以我们要思考出一种不管是车还是飞机或者火车,我们的程序都能灵活的适应需求的变化,这里就会用到FactoryMethod模式。

  

1 public interface Moveable {
2     void run();
3 }
1 public class Car implements Moveable {
2
3     @Override
4     public void run() {
5         System.out.println("car run");
6     }
7
8 }
1 public class Plane implements Moveable {
2
3     @Override
4     public void run() {
5         System.out.println("plane fly");
6     }
7
8 }1 public abstract class VicheleFactory {
2     abstract Moveable create();
3 }
1 public class CarFactory extends VicheleFactory {
2
3     @Override
4     public Moveable create() {
5         return new Car();
6     }
7
8 }
1 public class PlaneFactory extends VicheleFactory {
2
3     @Override
4     public Moveable create() {
5         return new Plane();
6     }
7
8 }
1 public class Test {
2     public static void main(String[] args) {
3 //        VicheleFactory factory = new CarFactory();
4         VicheleFactory factory = new PlaneFactory();
5         Moveable m = factory.create();
6         m.run();
7     }
8 }

    所有的工厂以及产品都有自己的父类,这个父类规定好自己的子类的方法特性,可以任意的扩展,这样测试类调用的时候只需要做小小的改动就可以响应需求的变化。

 

    FactoryMethod类结构

 

    由图可知,工厂和产品的父类处于相互平行的层次,而具体实现工厂和具体实现产品又是一种平行的层次,同时还存在一种生产关系。

 \

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 模式 上篇 歌词
上一篇:交通灯(二)
下一篇:mvc3之自定义类实现路由配置和URL的生成
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站