博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习笔记------抽象工厂模式
阅读量:5905 次
发布时间:2019-06-19

本文共 2142 字,大约阅读时间需要 7 分钟。

              抽象工厂模式

一、实例代码

1 /**  2  * 抽象产品A的接口  3  * @author abc  4  *  5  */  6 public interface AbstractProductA {  7     //定义抽象产品A相关的操作  8 }  9  10 /** 11  * 抽象产品B的接口 12  * @author abc 13  * 14  */ 15 public interface AbstractProductB { 16     //定义抽象产品B相关的操作 17 } 18  19 /** 20  * 产品A的具体实现 21  */ 22 public class ProductA1 implements AbstractProductA { 23     //实现产品A的接口中定义的操作 24 } 25  26 /** 27  * 产品A的具体实现 28  */ 29 public class ProductA2 implements AbstractProductA { 30     //实现产品A的接口中定义的操作 31 } 32  33 /** 34  * 产品B的具体实现 35  */ 36 public class ProductB1 implements AbstractProductB { 37     //实现产品B的接口中定义的操作 38 } 39  40 /** 41  * 产品A的具体实现 42  */ 43 public class ProductB2 implements AbstractProductB { 44     //实现产品B的接口中定义的操作 45 } 46      47 /** 48  * 抽象工厂的接口,声明创建抽象产品对象的操作 49  * @author abc 50  * 51  */ 52 public interface AbstractFactory { 53     /** 54      * 实例方法,创建抽象产品A的对象 55      * @return 抽象产品A的对象 56      */ 57     public AbstractProductA createProductA(); 58      59     /** 60      * 实例方法,创建抽象产品B的对象 61      * @return 抽象产品B的对象 62      */ 63     public AbstractProductB createProductB(); 64 } 65  66 /** 67  * 具体的工厂实现对象,实现创建具体的产品对象的操作 68  */ 69 public class ConcreateFactory1 implements AbstractFactory { 70  71     @Override 72     public AbstractProductA createProductA() { 73         return new ProductA1(); 74     } 75  76     @Override 77     public AbstractProductB createProductB() { 78         return new ProductB1(); 79     } 80 } 81  82 /** 83  * 具体的工厂实现对象,实现创建具体的产品对象的操作 84  */ 85 public class ConcreteFactory2 implements AbstractFactory { 86  87     @Override 88     public AbstractProductA createProductA() { 89         return new ProductA2(); 90     } 91  92     @Override 93     public AbstractProductB createProductB() { 94         return new ProductB2(); 95     } 96      97 } 98  99 public class Client {100     public static void main(String[] args) {101         //创建抽象工厂对象102         AbstractFactory af = new ConcreateFactory1();103         //通过抽象工厂来获取一系列的对象,如产品A和产品B104         af.createProductA();105         af.createProductB()106     }107 }

 

转载于:https://www.cnblogs.com/chensheng0617/p/8288429.html

你可能感兴趣的文章
mysql 多行合并函数
查看>>
艾级计算机的发展与挑战
查看>>
RocketMQ事务消息实战
查看>>
手把手教你做出好看的文本输入框
查看>>
zabbix 3.2.7 (源码包)安装部署
查看>>
vsCode 快捷键、插件
查看>>
网络最大流问题算法小结 [转]
查看>>
iOS推送消息报错误“Domain=NSCocoaErrorDomain Code=3000”的可能问题
查看>>
kvm-1
查看>>
leetcode 64. Minimum Path Sum
查看>>
textkit
查看>>
CentOS7+CDH5.14.0安装CDH错误排查: HiveServer2 该角色的进程已退出。该角色的预期状态为已启动...
查看>>
The Oregon Trail 俄勒冈之旅
查看>>
Excel VBA连接MySql 数据库获取数据
查看>>
Developing a Service Provider using Java API(Service Provider Interface)(转)
查看>>
oschina程序开发
查看>>
nested exception is java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
查看>>
“正在注册字体”问题解决
查看>>
windows10 更新后要输入2次密码才能进入系统
查看>>
iOS开发-OpenGL ES入门教程1
查看>>