用静态方法出错的原因:应该是你的程序没设计好。
工厂模式的好处:工厂方法为系统结构提供了非常灵活强大的动态扩展机制,只要我们更换一下具体的工厂方法,系统其他地方无需一点变换,就有可能将系统功能进行改头换面的变化。
在现在VS2005开发中还用这种模式吗:现在不止是vs2005,包括其它的面向对象编程语言,工厂模式用的都很广范哦
工厂的思想就是:我要什么,就问它要(调用方法返回),而不是自己创建(亲自实例化)。
如果需要的东西变了,就不需要重新创建(更改实例化的代码),而是仍然问别人要(没有修改任何代码,还是调用那个方法,你只要修改那个方法就够了)
优点:
· 隔离了具体类的生成,客户不需要知道怎样生成了每一个具体产品,什么时间生成的。它将客户与具体的类分离,依赖于抽象类,耦合性低。
· 一个产品族中的多个对象被设计成一起工作,它能够保证客户端始终只使用一个产品族中的对象。这对一些需要根据当前环境来决定其行为的软件系统来说,是非常实用的一种设计模式。
· 它有利于更换产品系列,由于客户端只依赖于抽象类,具体类也被写到应用程序配置文件中,更换产品系列时,只须更改一下具体工厂名就行了。
缺点:
· 难以支持新种类的产品。难以扩展抽象工厂以生产新种类的产品。这是因为抽象工厂几口确定了可以被创建的产品集合,支持新种类的产品就需要扩展该工厂接口,这将涉及抽象工厂类及其所有子类的改变。
应用情景:
· 同一个产品族的产品在一起使用时,而且它们之间是相互依赖的,不可分离
· 系统需要由相互关联的多个对象来构成
· 你想提供一组对象而不显示它们的实现过程,只显示它们的接口
· 系统不应当依赖某一些具体产品类。
应用场景举例:
· 游戏开发中的多风格系列场景
· 系统更改皮肤
· 支持多种观感标准的用户界面工具箱(Kit)。