首页 / 设计模式 / java设计模式--抽象工厂模式
java设计模式--抽象工厂模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java设计模式--抽象工厂模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2930字,纯文字阅读大概需要5分钟。
内容图文
![java设计模式--抽象工厂模式](/upload/InfoBanner/zyjiaocheng/772/fbba474fb2684ba1a105dac4a6caf100.jpg)
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
我们先回忆一下简单工厂模式的情形,有一个创建产品的接口,需要创建不同的产品时我们就需要创建多个工厂类。
//工厂接口
public interface IFactory {
//创建产品
Product createProduct();
}
//具体工厂
public class CarFactory implements IFactory {
@Override
public Product createProduct() {
//创建产品实例对象
return new Car();
}
}
public class BicycleFactory implements IFactory {
@Override
public Product createProduct() {
return new Bicycle();
}
}
public class Customer {
public static void main(String[] args) {
IFactory carFactory = new CarFactory();
Product car = carFactory.createProduct();
car.run();
IFactory bicycleFactory = new BicycleFactory();
Product bicycle = bicycleFactory.createProduct();
bicycle.run();
}
}
但是如果是这么一种情形呢,我们要生产的产品是一个类别,并且不再是一个,而是多个时,这种product接口就不符合情况了
我们看一个例子,假设需要不同的方法创建一系列产品
产品接口A以及实现。
public interface ProductA {
void Show();
}
public class ProductA1 implements ProductA {
@Override
public void Show() {
System.out.println(“使用工厂1生产出了产品A”);
}
}
public class ProductA2 implements ProductA {
@Override
public void Show() {
System.out.println(“使用工厂2生产出了产品A”);
}
}
产品接口B以及实现。
public interface ProductB {
void Show();
}
public class ProductB1 implements ProductB {
@Override
public void Show() {
System.out.println(“使用工厂1生产出了产品B”);
}
}
public class ProductB2 implements ProductB {
@Override
public void Show() {
System.out.println(“使用工厂2生产出了产品B”);
}
}
工厂接口以及实现,两个具体工厂分别对应两种生产该产品的方法。
public interface Factory {
ProductA ManufactureA();
ProductB ManufactureB();
}
public class ConcreateFactory1 implements Factory {
@Override
public ProductA ManufactureA() {
return new ProductA1();
}
@Override
public ProductB ManufactureB() {
return new ProductB1();
}
}
public class ConcreateFactory2 implements Factory {
@Override
public ProductA ManufactureA() {
return new ProductA2();
}
@Override
public ProductB ManufactureB() {
return new ProductB2();
}
}
在实际应用中,我们可能只需要某一种方法去创建产品A,B,但是当我们想要切换产品的生产方法时,就只需要将new ConcreateFactory1()替换为new ConcreateFactory2()就可以了,此时无论是哪一个工厂的方法,他生产某一个产品调用的都是同一个方法,例如factory.ManufactureA();但是如果在工厂方法模式中,我们新增一个产品的制作方法,就需要新增工厂,在客户端内去调用不同工厂的createProduct()这样就增加了系统的复杂性。
public class Test {
public static void main(String[] args){
Factory factory = new ConcreateFactory1();
ProductA productA = factory.ManufactureA();
ProductB productB = factory.ManufactureB();
productA.Show();
productB.Show();
Factory factory2 = new ConcreateFactory2();
ProductA productA2 = factory2.ManufactureA();
ProductB productB2 = factory2.ManufactureB();
productA2.Show();
productB2.Show();
}
内容总结
以上是互联网集市为您收集整理的java设计模式--抽象工厂模式全部内容,希望文章能够帮你解决java设计模式--抽象工厂模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。