设计模式实战 - 抽象工厂模式导读定义适用场景优点缺点产品等级结构与产品族实践 coding

导读

工厂方法模式人是造出来了,可都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,忘记给人类定义性别了,那怎么办? 从头开始建立所有的事物也是不可能的,那就想在现有的条件下重新造人,尽可能旧物利用嘛 人种(Product产品类)应该怎么改造呢?怎么才能让人类有爱有恨呢?定义互斥的性别,然后在每个个体中埋下一颗种子:异性相吸,成熟后就一定会去找个异性 从设计角度来看,一个具体的对象通过两个坐标就可以确定:肤色和性别

肤色性别坐标图

  • 产品类分析完,生产的工厂类(八卦炉)该怎么改造呢? 只有一个生产设备,要么生产出来的全都是男性,要么都是女性,何以解忧? 把目前已经有的生产设备—八卦炉拆开,于是女娲就使用了“八卦复制术”,把原先的八卦炉一个变两个,并且略加修改,就成了女性八卦炉(只生产女性人种)和男性八卦炉(只生产男性人种),于是就开始准备生产

重新生产人类 一个接口,多个抽象类,然后是N个实现类,每个人种都是一个抽象类,性别是在各个实现类中实现的 特别需要说明的是HumanFactory接口,在这个接口中定义了三个方法,分别用来生产三个不同肤色的人种,也就是我们在坐标图的Y坐标,它的两个实现类分别是性别,也就是坐标图的X坐标 通过X坐标(性别)和Y坐标(肤色)唯一确定了一个生产出来的对象

  • Human接口如代码
  • 人种有三个抽象类,负责人种的抽象属性定义 肤色和语言,白色人种、黑色人种、黄色人种

每个抽象类都有两个实现类,分别实现公共的最细节、最具体的事物:肤色和语言 具体的实现类实现肤色、性别定义

  • 以黄色女性人种为例
  • 黄色男性人种

定义

适用场景

优点

缺点

产品等级结构与产品族

当一个工厂可以创建出分属于不同产品等级结构的一个产品族中的所有对象时 抽象工厂比工厂方法更适合!!!

实践 coding

Java 类相关

Python相关

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【专知-关关的刷题日记18】Leetcode 35. Search Insert Position

题目 Given a sorted array and a target value, return the index if the target is fo...

3779
来自专栏take time, save time

Think in 递归

     网上写递归的文章可以用汗牛充栋来形容了,大多数都非常清晰而又细致的角度上讲解了递归的概念,原理等等。以前学生的时候,递归可以说一直是我的某种死穴,原理...

41412
来自专栏算法channel

除自身累乘算法题,又有创意解法了

一个数组,求除了某元素自身位置之外的其他元素累积相乘,返回一个同长度的数组。有两个要求比较苛刻: 1) 不能用除法 2) 时间复杂度O(n),空间复杂度O(1)...

1320
来自专栏ACM算法日常

朋友圈(拉姆齐定理)- HDU 6152

拉姆齐Ramsey定理是一个稍微难于理解的定理,该定理又称拉姆齐二染色定理,是要解决这样的问题:

1482
来自专栏小樱的经验随笔

POJ 1017 Packets

Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53812...

38113
来自专栏SnailTyan

枚举——生理周期

1. 枚举 枚举是基于逐个尝试答案的一种问题求解策略。 2. 生理周期 问题描述 人有体力、情商、智商的高峰日子,它们分别每隔23天、28天和33天出现一次...

2030
来自专栏数据结构与算法

2924 数独挑战

2924 数独挑战  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Descripti...

2953
来自专栏喔家ArchiSelf

IOT语义互操作性之本体论

这个系列文章描述了一个单一的语义数据模型来支持物联网和建筑、企业和消费者的数据转换。 这种模型必须简单可扩展, 以便能够在各行业领域之间实现插件化和互操作性。 ...

1285
来自专栏JetpropelledSnake

Python Web学习笔记之递归和迭代的区别

电影故事例证: 迭代——《明日边缘》 递归——《盗梦空间》 迭代是更新变量的旧值。递归是在函数内部调用自身。 迭代是将输出做为输入,再次进行处理。比如将摄像头对...

33512
来自专栏take time, save time

你所能用到的数据结构(二)

      周末开始更新了,首先感谢各位对我写的东西还能保持兴趣,先回答几个留言中的一个问题和我对无损编码那一节的一个留言的一个看法,第一个是推荐算法书,首先,...

3166

扫码关注云+社区

领取腾讯云代金券