Java设计模式——抽象工厂模式(Abstract factory)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java设计模式——抽象工厂模式(Abstract factory),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1964字,纯文字阅读大概需要3分钟。
内容图文
![Java设计模式——抽象工厂模式(Abstract factory)](/upload/InfoBanner/zyjiaocheng/1328/b2cfbc9d0dee4fac949428d0861c24fa.jpg)
抽象工厂模式可以向客户提供接口,使得客户端在不必指定产品具体类型的情况下创建多个产品族中的产品对象。
系统的设计
采用抽象工厂模式设计出的系统类图如下:
从上图可以看出,抽象工厂模式涉及到角色:
抽象工厂角色(AbstractFactory):担任这个角色的是工厂方法模式的核心,它与应用系统的商业逻辑无关。通常使用Java接口或者抽象Java类实现,而所有的具体工厂类都必须实现这个Java接口或者继承这个抽象Java类。
具体工厂类(ConcreteFactory)角色:这个角色直接在客户端的调用下创建产品实例。这个角色包含有选择合适的产品对象的逻辑,而这个逻辑与应用系统的商业逻辑紧密相关的。通常使用具体Java类实现这个角色。
抽象产品(Abstract Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或他们共同拥有的接口。通常使用Java接口或者抽象Java类实现这一角色。
具体产品(Concrete Product)角色:抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,其内部一定充满了应用系统的商业逻辑。通常使用具体Java类实现这个角色。
工厂角色源代码
publicinterfaceCreater {/**
* 产品等级A的工厂方法
* @author 付玉伟
* @time 2015-3-21 下午05:03:14
* @return
*/public ProductA factoryA();
/**
* 产品等级B的工厂方法
* @author 付玉伟
* @time 2015-3-21 下午05:03:31
* @return
*/public ProductB factoryB();
}
具体的工厂角色(一般而言,有多少个产品等级结构,就会在工厂角色中发现多个个工厂方法,每一个产品等级结构中有多少个具体的产品,就有多少个产品族,也就会在工厂等级结构发现多少个具体的工厂)
public
class
ConcreteCreator1
implements
Creater {
public ProductA factoryA() {
returnnew ProductA1();
}
public ProductB factoryB() {
returnnew ProductB1();
}
}
publicclassConcreteCreatro2implementsCreater {public ProductA factoryA() {
returnnew ProductA1();
}
public ProductB factoryB() {
returnnew ProductB1();
}
}
publicinterfaceProductA {
}
publicinterfaceProductB {
}
publicclassProductA1implementsProductA {publicProductA1(){
}
}
publicclassProductA2implementsProductA {publicProductA2(){
}
}
publicclassProductB1implementsProductB {publicProductB1(){
}
}
publicclassProductB2implementsProductB {publicProductB2(){
}
}
客户端需要的不是工厂,而是具体的产品。在真实的系统中,产品类应当与应用系统的商业逻辑有密切的关系。
在什么情况下使用抽象工厂模式?
1、一个系统不应单依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
2、这个系统的产品有多于一个的产品族,而系统中只消费其中某一族的产品
3、同属于同一个产品族的产品是在一起使用的,这一约束必须在系统设计中体现出来
4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现
原文:http://blog.csdn.net/fuyuwei2015/article/details/44858359
内容总结
以上是互联网集市为您收集整理的Java设计模式——抽象工厂模式(Abstract factory)全部内容,希望文章能够帮你解决Java设计模式——抽象工厂模式(Abstract factory)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。