(Abstract Factory)抽象工厂模式的Java实现
//其中的method()方法可看作提取出不同产品的共性,如手机都有类似的功能
interface IProductA{
public void method();
}
interface IProductB{
public void method();
}
//实现了产品标准实现的一系列具体产品
//由于已经设计好A1由厂商1生产,故以下输出代码有“厂商x”
class ProductA1 implements IProductA{
public void method() {
System.out.println("厂商1 生产ProductA1 ...");
}
}
class ProductA2 implements IProductA{
public void method() {
System.out.println("厂商2 生产ProductA2 ...");
}
}
class ProductB1 implements IProductB{
public void method() {
System.out.println("厂商1 生产ProductB1 ...");
}
}
class ProductB2 implements IProductB{
public void method() {
System.out.println("厂商2 生产ProductB2 ...");
}
}
//每一种牌子的产品生产工厂,即不同的厂商负责自己牌子产品的生产
abstract class Factory1{
abstract IProductA getProductA1();
abstract IProductB getProductB1();
}
abstract class Factory2{
abstract IProductA getProductA2();
abstract IProductB getProductB2();
}
//具体的工厂用来生产相关的产品
class ConcreteFactory1 extends Factory1{
public IProductA getProductA1() {
return new ProductA1();
}
public IProductB getProductB1() {
return new ProductB1();
}
}
class ConcreteFactoryB extends Factory2{
public IProductA getProductA2() {
return new ProductA2();
}
public IProductB getProductB2() {
return new ProductB2();
}
}
//测试类
public class Client {
public static void main(String[] args) {
//厂商1负责生产产品A1、B1
Factory1 factory1 = new ConcreteFactory1();
IProductA productA1 = factory1.getProductA1();
IProductB productB1 = factory1.getProductB1();
productA1.method();
productB1.method();
//厂商2负责生产产品A2、B2
Factory2 factory2 = new ConcreteFactoryB();
IProductA productA2 = factory2.getProductA2();
IProductB productB2 = factory2.getProductB2();
productA2.method();
productB2.method();
}
}
厂商1 生产ProductA1 ...
厂商1 生产ProductB1 ...
厂商2 生产ProductA2 ...
厂商2 生产ProductB2 ...
|
转载于:https://blog.51cto.com/haolloyin/332802
(Abstract Factory)抽象工厂模式的Java实现相关推荐
- Java 设计模式之 Abstract Factory 抽象工厂模式
在工厂方法基础上,将工厂的生产方法的返回类型从具体产品抽象为抽象产品,同时扩展工厂的方法,支持任意定制产品族,则工厂方法可以升级为抽象工厂模式,比如一家餐厅可以提供牛排(方法A),红酒(方法B),蔬菜 ...
- 设计模式学习总结1 - 创建型1 - Abstract Factory抽象工厂模式
AbstractFactory抽象工厂模式(创建型) 作用: 这种模式支持创建不同的对象,这些对象功能接近且一般都是在一起创建的.抽象工厂被具体化成不同的工厂来创建类似产品的不同产品.这种模式将类于使 ...
- Abstract Factory抽象工厂模式
抽象工厂模式是是用一个超级工厂去创建其他工厂,简单点说就是工厂的父类,属于创建型模式. 目标:提供一个创建一组对象的方法,而无需指定它们具体的类(同工厂方法). 使用场景:系统的产品有多于一个的产品族 ...
- 笔记:设计模式(3)-Abstract Factory抽象工厂模式
工厂模式的起源 1.变化点在"对象的创建",因此就封装"对象创建": 2.面向接口编程,依赖接口,而非依赖实现. 动机(Motivation) 在系统中,经 ...
- 09Abstract Factory(抽象工厂)模式
技术交流QQ群:1027579432,欢迎你的加入! 1.Abstract Factory(抽象工厂)模式动机 在软件系统中,经常面临着一系列相互依赖的对象的创建工作.同时,由于需求的变化,往往存在更 ...
- 设计模式—抽象工厂模式(java实现示例)
一.相关定义 抽象工厂: 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种 ...
- 简单工厂模式,工厂方法模式,抽象工厂模式总结-java版
文章目录 LOG:更新日志 一.简单工厂模式,工厂方法模式,抽象工厂模式定义 二.三种工厂模式的优缺点以及适用场景 三.名词解释 四.简单工厂模式.工厂方法模式与抽象工厂模式之间的区别 五.抽象工厂模 ...
- 设计模式之抽象工厂模式(Abstract Factory)摘录
面向对象系统的分析和设计实际上追求的就是两点:高内聚(Cohesion)和低耦合(Coupling). 23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.Fa ...
- 应用抽象工厂模式自己动手写一个ioc
本文的作者Danny hui似乎是TTS上的新人,我从Google搜不出一点关于本人的信息.从通过本文可以看出他对模式与IoC有自己独到的见解,本文在TTS上引发很多网友回帖,反响不一.那么我们现在来 ...
- 抽象工厂模式,工厂方法模式区别
抽象工厂模式 转载自:https://www.shiyanlou.com/courses/document/867 一.本节目标 我们本节课程主要介绍[抽象工厂模式]的相关知识,将会涉及以下内容: 什 ...
最新文章
- 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩
- Elasticsearch线程池介绍
- php字符串连接符、三元运算符
- 美团点评技术年货:900+页电子书,覆盖前端、后台、大数据、算法……(附下载链接)...
- pipeline(管道的连续应用)
- java B2B2C springmvc mybatis电子商城系统-分布式配置中心(Spring Cloud Config)
- Linux公网渗透抓鸡实验
- RK3568 Android12 移除电池图标和设置选项
- JavaWeb程序填空题
- OpenGL开发-第6章-纹理,让物体更漂亮
- 如何用Amira分割DICOM图像
- [ZJOI2004]沼泽鳄鱼
- 使用百度翻译开发平台,英文翻译为中文
- oracle 基础语法(二)
- springboot项目Banner配置
- 旅游攻略app开发定制
- Python(4)循环嵌套算法及冒泡排序
- android 使用asm.jar将android手机屏幕投影到电脑上
- pandas 字符串切片后保存_pandas:快速处理字符串方法
- 微信小程序开发系列——3. 腾讯云服务器配置
热门文章
- IE9 pinned sites for Win7
- Redis(RedisTemplate)使用string字符串
- 红帽学习笔记[RHCSA] 第二课[文件、目录、相关命令]
- createrepo命令
- Win32 编程
- Vue webapp项目通过HBulider打包原生APP
- jQuery的对象访问函数(get,index,size,each)
- Pig 实现关键词匹配
- 一个很方便使用十六进制的颜色值的宏
- Cainteoir Text-to-Speech 0.8 发布