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

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

抽象工厂(Abstract Factory)

意图:

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

适用性:

    一个系统要独立于它的产品的创建、组合和表示时。

    一个系统要由多个产品系列中的一个来配置时。

    当你要强调一系列相关的产品对象的设计以便进行联合使用时。

    当你提供一个产品类库,而只想显示它们的接口而不是实现时。

原理图:

clip_image002

 

 

实现代码:

1 /** 2  * 抽象工厂 3  */ 4 interface Animal { 5     public function createDog(); 6     public function createCat(); 7 } 8  9 10 /**11  * 实体工厂12  */13 class BigFactory implements Animal {14     public function createDog() {15         return new bigDog();16     }17     public function createCat() {18         return new bigCat();19     }20 }21 22 23 /**24  * 抽象产品25  */26 interface Big{27     const _SIZE = 'Big ';28     public function size();29 }30 /**31  * 具体产品32  */33 class bigDog implements Big{34     const ANIMAL = 'Dog';35     public function __construct() {36         $this->size();37     }38     public function size() {39         echo self::_SIZE,self::ANIMAL,"
";40 }41 }42 43 class bigCat implements Big{44 const ANIMAL = 'Cat';45 public function __construct() {46 $this->size();47 }48 public function size() {49 echo self::_SIZE,self::ANIMAL,"
";50 }51 }52 53 /**54 * 最终实例55 */56 $ft = new BigFactory();57 $BigCat1 = $ft->createCat();58 $BigCat2 = $ft->createCat();59 60 echo "
";61 $BigDog1 = $ft->createDog();62 $BigDog2 = $ft->createDog();

参考文献:

http://www.cnblogs.com/zhangchenliang/p/3700820.html

 

转载于:https://www.cnblogs.com/faronl/p/4699347.html

你可能感兴趣的文章
基于Laravel的轻量级CMS系统及通用管理后台
查看>>
跳动在网页之间的精灵——JavaScript
查看>>
GT - iOS性能分析工具 - 集成使用
查看>>
Slog93_使用React框架进行前端开发5
查看>>
vagrant box add metadata.json报错
查看>>
Swift Currying(柯里化)
查看>>
Java 泛型原理
查看>>
支持cocoapods
查看>>
为什么说传统分布式事务不再适用于微服务架构?
查看>>
【正则表达式】解析numeral的千位分隔符
查看>>
[小团队自动化](二) Drone CI使用Vault作为凭据存储 —— 打造自己的CI/CD工作流...
查看>>
穆宁格:5.8 投资心态很重要,心态决定输赢
查看>>
每日一算 (001)
查看>>
python 闭包与装饰器
查看>>
引入 Tinker 之后如何在 Debug 模式下开启 Instant Run
查看>>
干货:小微个人如何接入免费短信验证码
查看>>
javaScript之全局函数
查看>>
阿里中后台UI解决方案 - Fusion
查看>>
HTTP常用状态码
查看>>
剑指offer 题目4
查看>>