您的位置:首页 > 汽车 > 时评 > 一站式发稿平台_千图主站的功能介绍_徐州百度快照优化_头条热点新闻

一站式发稿平台_千图主站的功能介绍_徐州百度快照优化_头条热点新闻

2025/1/15 6:50:35 来源:https://blog.csdn.net/Bof_jangle/article/details/144117258  浏览:    关键词:一站式发稿平台_千图主站的功能介绍_徐州百度快照优化_头条热点新闻
一站式发稿平台_千图主站的功能介绍_徐州百度快照优化_头条热点新闻

目录

0、定义

1、抽象工厂模式的四种角色

2、抽象工厂的UML类图

3、示例代码


0、定义

        提供一个创建一系列或相互依赖对象的接口,而无须指定它们具体的类。

1、抽象工厂模式的四种角色

  • 抽象产品(Product):一个抽象类或接口,负责定义具体产品必须实现的方法。
  • 具体产品(ConcreteProduct):具体产品是个类,继承或实现抽象产品接口的类。
  • 抽象工厂(AbstractFactory):一个抽象类或接口,负责定义若干个抽象方法。
  • 具体工厂(ConcreteFactory):具体工厂重写或实现抽象工厂中的抽象方法,使该方法返回具体产品的实例。

2、抽象工厂的UML类图

3、示例代码

抽象产品A

package xyz.jangle.design.abstractfactory;public interface ProductA {}

具体产品A1和A2

package xyz.jangle.design.abstractfactory;public class ProductA1 implements ProductA {}
package xyz.jangle.design.abstractfactory;public class ProductA2 implements ProductA {}

抽象产品B

package xyz.jangle.design.abstractfactory;public interface ProductB {}

具体产品B1和B2

package xyz.jangle.design.abstractfactory;public class ProductB1 implements ProductB {}
package xyz.jangle.design.abstractfactory;public class ProductB2 implements ProductB {}

抽象工厂

package xyz.jangle.design.abstractfactory;public abstract class AbstractFactory {public abstract ProductA createProductA();public abstract ProductB createProductB();}

具体工厂1和具体工厂2

package xyz.jangle.design.abstractfactory;public class ConcreteFactory1 extends AbstractFactory {@Overridepublic ProductA createProductA() {return new ProductA1();}@Overridepublic ProductB createProductB() {return new ProductB1();}}
package xyz.jangle.design.abstractfactory;public class ConcreteFactory2 extends AbstractFactory {@Overridepublic ProductA createProductA() {return new ProductA2();}@Overridepublic ProductB createProductB() {return new ProductB2();}}

客户端(使用)

package xyz.jangle.design.abstractfactory;public class AppMain14 {public static void main(String[] args) {AbstractFactory factory1 = new ConcreteFactory1();ProductA productA = factory1.createProductA();ProductB productB = factory1.createProductB();System.out.println("抽象工厂1生产了 A1和B1的产品:"+ productA+" and "+productB);AbstractFactory factory2 = new ConcreteFactory2();ProductA productA2 = factory2.createProductA();ProductB productB2 = factory2.createProductB();System.out.println("抽象工厂2生产了 A2和B2的产品:"+ productA2+" and "+productB2);}}

输出信息

抽象工厂1生产了 A1和B1的产品:xyz.jangle.design.abstractfactory.ProductA1@659e0bfd and xyz.jangle.design.abstractfactory.ProductB1@2a139a55
抽象工厂2生产了 A2和B2的产品:xyz.jangle.design.abstractfactory.ProductA2@15db9742 and xyz.jangle.design.abstractfactory.ProductB2@6d06d69c

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com