[标题党来了]偶想用静态工厂模式,可是它又不完全支持“开闭”,偶想用工厂方法模式,可是接口或抽象中又不能有Static方法? RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 恩,具体的问题是,偶想用静态工厂模式,可是如果用这种模式的话,将来要添加具体的产品时要修改工厂类。所以这样不符合开闭原则,只能说是在客户端上符合开闭。但是有个好处就是这工厂中的方法可以是静态的(因为是具体工厂),直接用类名.方法就OK了。后来偶又改用工厂方法,就是把原来具体工厂抽象成一个接口或是抽象类A,然后具体工厂类B实现或继承这个A,但是由于A中不能有static的方法。所以在使用具体工厂B时需要B b=new B();或是class.forname之类的,可是偶非常不爽这样,有什么办法呢? 你看到的都是这两个模式的不足之处,工厂方法是支持开闭原则的,一个工厂对应一个产品,当你新增产品时,只需增加一个工厂即可。至于使用方面,new factory() 和factory.getInstance()也没太大区别吧?只不过多写一句话。 偶承认偶有点完美主义了,呵呵。只是偶认为在使用工厂方法的时候,应该尽量避免在客户端做创建的工作,如果用new Factory()或是factory.getInstance()的话,这样工厂的创建的职责就归到了客户端,偶想要个纯消费的客户端。谢谢 oracs(有技术没约束) 的回复! java远程判断服务器开关机状态,并远程判断该服务器的系统账号和密码是否正确 关于ava串口的读取问题 jtable jcheckbox 关于java输入流的一个小问题 一个从文件中读内容的问题,急死了,快帮帮呀 请问怎么用正则表达式的非捕获? 模式设计中的聚集和组合的理解 超级疑难小问题,四处找遍没结果,见鬼了! 学完基础之后的我接下来学什么好 用什么结构存贮这些"经度,纬度,地名"数据较好? java截取网页代码部分内容 这个问题难道好多人哦??
后来偶又改用工厂方法,就是把原来具体工厂抽象成一个接口或是抽象类A,然后具体工厂类B实现或继承这个A,但是由于A中不能有static的方法。所以在使用具体工厂B时需要B b=new B();或是class.forname之类的,可是偶非常不爽这样,有什么办法呢?
工厂方法是支持开闭原则的,一个工厂对应一个产品,当你新增产品时,只需增加一个工厂即可。至于使用方面,new factory() 和factory.getInstance()也没太大区别吧?只不过多写一句话。
谢谢 oracs(有技术没约束) 的回复!