工作中,我们时常接触到switch...case...项目需求,
但是随着需求的变化,case条件可能会慢慢无预料地增多,因此....
现在正在学习设计模式,想通过"工厂模式"来替代switch...case...
大致的意思是:switch(id)
{
case "1":
create1();
....
case "2":
create2();
...
case "3":
create3();
...
}想通过建一个Factory类来实现,只需要:
Factory f = new Factory(id);
f.create();
....
请大家支持解决方案与思路。因惑:
把id设为构造函数的参数,但是不通过if...似乎又很难整出来,
也许还是面向对像的习惯没陪养出来。
但是随着需求的变化,case条件可能会慢慢无预料地增多,因此....
现在正在学习设计模式,想通过"工厂模式"来替代switch...case...
大致的意思是:switch(id)
{
case "1":
create1();
....
case "2":
create2();
...
case "3":
create3();
...
}想通过建一个Factory类来实现,只需要:
Factory f = new Factory(id);
f.create();
....
请大家支持解决方案与思路。因惑:
把id设为构造函数的参数,但是不通过if...似乎又很难整出来,
也许还是面向对像的习惯没陪养出来。
还是具体要分析,switch要干什么
可以把这种耦合放到配置文件当中,系统启动时读取配置文件,创建相应的对象
----------------
你说的好像一本设计模式书的,哈哈
---------------------------------------
目前,条件id是无法知道到底是"1",还是"2".....
只需要把条件id传给构造函数,
然后类对像自动处理!以前也遇到过这样的面试题,
我这样想的:
Abstract Class Case
{
Abstract void Creat();
}//////////////////////////////
public Class Caes1:Case
{
override void Creat()
{
.....
}
}////////////////////////////////////////////////public void PrototypeSwitch(Case c)
{
c.Create();
}不知道这样是否可以,是否是Prototype模式
--------
我认为,Factory Method,实际就是在一个Factory接口之上,派生出N多的子Factory,每个子Factory对应一个CreateCase(),调用时,客户端去决定调用那个子Factory。
Gof中,Factory Method的定义是:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。
不过,有一点我想不通的是:
如何据case条件来实类化那个相应的类呢?
客户应用程序仅对接口进行操作Factory Class根据传入的字符串,创建接口的不同子类