发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 下一页 Go 2

模式新手的FACTORY看法。请指点

    
2005-07-05 17:16
赞助商链接

FACTORY
建立一个专门生产keyboard(键盘)的工厂
public class Factory{
  public static Keyboard creator(int which){
   //为什么用static?
  if (which==1)
    return new keyboardBig();大键盘,成年人用
  else if (which==2)
    return new keyboardSmall();小键盘,小学生用
  }
}

Abstract Factory
现在工厂做大了,不只生产键盘,甚至要出成品电脑了
public abstract class Factory{
  public abstract Keyboard createKeyboard();
  public abstract CPU creatorCPU (String name); //参数为了选择产品有更的的灵活性。是否需要根据实际情况。
}
public class ArmyFactory extends Factory{//生产面向军工的产品。。
  public Keyboard createKeyboard (){
    .........
    return new KeyboardArmy() //军工键盘。
  }
public CPU createCPU (String name){ //军用 Intel 或 AMD CPU

    if……. return IntelArmy
   else return AMDArmy
 }
}
public class PeopleFactory extends Factory{//生产面向群众的产品。
  public Keyboard createKeyboard(){
    ......
    return new Keyboard //普通键盘。
  }
  public CPU createCPU (String name){
    if……. return Intel
    else return AMD //普通Intel or AMD CPU
  }
}


这是我第二便看完banq 的写的设计模式,也参考GOF的那本书。

上面的代码是我根据banq的改的,(没别的意思,发在这里是向和大家
讨论。因为我是个新手,,,不感肯定自己,,想法,,,SO 请
banq和大家给指点一下)不好意思。

希望能说说自己真正的看法,让我们共同进步。

2005-07-05 17:34

static 是必须用的吗?

类的static变量和方法,是被所有它生成的事例共响的。

在多线程里也一样吗?像Servlet中。
多个Servlet 线程中用上面的静态方法,,,如果多个线程同时访问是怎么处理的,

(每个线程同时访问,还是排队访问)

public class KeyboardFactory{
  public static Keyboard creator(int which){
   //static 必须吗?
  if (which==1)
    return new keyboardBig();大键盘,成年人用
  else if (which==2)
    return new keyboardSmall();小键盘,小学生用
  }
}

2005-07-05 21:11

static我认为不是必须的,这是工厂的实例生成方式了。
整个代码好像还不错。

不过工厂目前使用范围很小,不再适合做架构模式。

2005-07-05 22:47

我觉得你写的这些文章对我们新手是很好的指引。
说真的,我一开始看GOF的那本书真的看不懂。都是C++的代码。何况那么精练,
看了你的文章,之后我就找到感觉了。以后坚持把你的模式文章在看一边,而且对读JIVE论坛有好处。


OO-------不过工厂目前使用范围很小,不再适合做架构模式。

我现在对模式一知半解,是说现在设计代码更复杂了吗?
除了这23种。还要继续领会向AOP。。。之类的吗?

我以后会继续向你请教,

2005-07-06 00:01

我琢磨了会,又有一些想法。

static 不是必须,我想最好有。因为在使用这个FACTORY类的时候
会方便些。(直接用static的方法,不用去生成FACTORY对象再调用方法了)




在多个线程中,同一时刻,调用public static Keyboard creator()
这个方法。是每个线程排队访问还是多个同时访问。
我的水平不太好,我觉得是
多个线程同一时刻,同时访问这个static.

这个是我猜的,拿不准。。。。。

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com