方法工厂模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了方法工厂模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1634字,纯文字阅读大概需要3分钟。
内容图文
![方法工厂模式](/upload/InfoBanner/zyjiaocheng/1183/c9f98b445cf844fda2ed06f9132f45b0.jpg)
在简单工厂模式中我们发现一个问题就是我们的工厂是比较死的,如果我们新增一个产品,就需要改变工厂模式的判断条件
很明显这是不符合我们要求的。
方法工厂模式中我们有四种角色: 抽象产品 具体产品 抽象工厂 具体工厂
我们产品是产品 工厂是工厂 我们一个产品对应一个具体工厂 。
详细见下面代码:
//抽象产品 public interface Color { public void showColor(); } //具体产品1 public class RedColor implements Color { @Override public void showColor() { System.err.println("show red"); } } //具体产品2 public class RedColor implements Color { @Override public void showColor() { System.err.println("show yelow"); } } //抽象工厂 public interface ColorFactory { public Color newInstance(); } //工厂实现: public class RedColorFactory implements ColorFactory { @Override public Color newInstance() { return new RedColor(); } } //工厂实现 public class YellowColorFactory implements ColorFactory { @Override public Color newInstance() { return new YellowColor(); } } 这样调用就可以实现: ColorFactory colorFactory = new RedColorFactory(); Color redColor = colorFactory.newInstance(); redColor.showColor(); ColorFactory factory2 = new YellowColorFactory(); Color yellowColor = factory2.newInstance(); yellowColor.showColor();
以上代码就可以避免简单工厂的问题
假设我们需要一个BluColor 就新增一个BlurColor的实现类,一个BlueColorFactory的实现类
对原有的代码没有任何修改的地方
ColorFactory factory3 = new BlueColorFactory(); Color blueColor = factory3.newInstance(); blueColor.showColor();
灵活使用
缺点:
-
在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,有更多的类需要编译和运行,会给系统带来一些额外的开销。
自己注解: 我们增加了一个blueColor就得增加一个产品实现一个工厂实现 成对增加
-
由于考虑到系统的可扩展性,需要引入抽象层,在客户端代码中均使用抽象层进行定义,增加了系统的抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统的实现难度。
自己注解: 日志记录 针对日志记录的方式是数据库 文件 这些都可以放在配置文件中间利用反射区构建
一个日志记录的抽象类 2个日志记录的具体实现类 分别是文件和数据库
这些都可以放在配置文件中利用DOM和反射区指定具体的实现方式
原文:http://my.oschina.net/payzheng/blog/511406
内容总结
以上是互联网集市为您收集整理的方法工厂模式全部内容,希望文章能够帮你解决方法工厂模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。