<?php
/* 实例4 */
/* 使用工厂类解析图像工作 */
interface IImage {function getWidth();function getHeight();function getData();
}
class Image_PNG implements IImage {protected $_width, $height, $_data;public function __construct($file) {$this->_file = $file;$this->_parse();}private function _parse() {//完成PNG格式的解析工作//并填充$_width, $_height, $_data$this->_data = getimagesize($this->_file);list($this->_width, $this->_height) = $this->_data;}public function getWidth() {return $this->_width;}public function getHeight() {return $this->_height;}public function getData() {return $this->_data;}
}
class Image_JPGE implements IImage {protected $_width, $_height, $_data;public function __construct($file) {$this->_file = $file;$this->_parse();}private function _parse() {//完成JPGE格式的解析工作//并填充$_width, $_height, $_data//$this->_width = imagesx($this->_file);//$this->_height = imagesx($this->_file);$this->_data = getimagesize($this->_file);list($this->_width, $this->_height) = $this->_data;}public function getWidth(){return $this->_width;}public function getHeight(){return $this->_height;}public function getData() {return $this->_data;}
}
class ImageFactory {public static function factory($file) {$filename = pathinfo($file);switch(strtolower($filename['extension'])){case 'jpg':$return = new Image_JPEG($file);break;case 'png':$return = new Image_PNG($file);break;default:echo '图片类型不正确';break;}if($return instanceof IImage) {return $return ;} else {echo '出错了';exit();}}}
$image = ImageFactory::factory('path/my.png');
var_dump($image->getWidth());
echo '<br>';
print_r($image->getheight());
echo '<br>';
print_r($image->getData());

转载于:https://www.cnblogs.com/yhdsir/p/4649230.html

IImage--factory相关推荐

  1. 使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with

    使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with ...

  2. 设计模式之简单工厂模式(Simply Factory)摘录

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  3. 设计模式之工厂方法模式(Factory Method)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  4. 设计模式之抽象工厂模式(Abstract Factory)摘录

    面向对象系统的分析和设计实际上追求的就是两点:高内聚(Cohesion)和低耦合(Coupling). 23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.Fa ...

  5. 设计模式(2)工厂方法模式(Factory Method)

    设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 源码地址 0 工厂方法模式简介 0.0 工厂方法模式定义 工厂方法模式是在简单工厂模式基础上,为解决更复杂的对象创建问题而衍生 ...

  6. Effective Java - Item 1: Consider static factory methods instead of constructors

    考虑使用静态工厂方法来替代构造方法, 这样的做的好处有四点. 1. 更好的表意 有的构造方法实际上有特殊的含义, 使用静态工厂方法能更好的表达出他的意思. 例如 BigInteger(int, int ...

  7. 工厂模式(Factory)(转)

    先来明确一个问题,那就是有的时候,实例化这个活动不应该总是公开的进行, 也就是不要公开的使用 new 操作符,因为,这样容易造成耦合问题. 我们不应该针对实现编程,但是当我们在使用 new 的时候,便 ...

  8. 报错 org.springframework.beans.factory.BeanCreationException

    2019独角兽企业重金招聘Python工程师标准>>> 一.问题背景: spring mvc eclipse启动报错:org.springframework.beans.factor ...

  9. 设计模式之笔记--抽象工厂模式(Abstract Factory)

    抽象工厂模式(Abstract Factory) 定义 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 类图 描述 多个抽象产品 ...

  10. 《转》java设计模式--工厂方法模式(Factory Method)

    本文转自:http://www.cnblogs.com/archimedes/p/java-factory-method-pattern.html 工厂方法模式(别名:虚拟构造) 定义一个用于创建对象 ...

最新文章

  1. Oracle归档已满的处理办法
  2. STM32高级开发(12)-在GCC中使用printf打印串口数据
  3. 数据中心基础运维人员的职业规划
  4. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失...
  5. 移动web开发都会遇到的坑(会持续更新)
  6. Redis常用命令之操作Hash类型
  7. 微信小程序把玩(三十二)Image API
  8. MATLAB判断奇偶数
  9. VS2005-此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版
  10. python定时重新初始化类_如何重新初始化类对象
  11. Navicat用法入门
  12. NetScaler Active-Active模式
  13. 反驳《SEO的几大罪行》
  14. 新浪博客中特殊字符不显示的问题
  15. 分享一个便宜又好用的代理ip
  16. We‘re sorry but XXX doesn‘t work properly without JavaScript enabled.
  17. Unity 进阶 之 实现简单的音频可视化封装(包括音频和麦克风)
  18. 有趣的Python:Python控制键盘鼠标
  19. 蒙德里安森林算法_DP没入门就入土
  20. 我国劳动法中关于高校应届毕业生就业协议及合同的一切条款

热门文章

  1. keepalive+nginx实现负载均衡高可用_高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat...
  2. oracle游标缓存,【oracle】游标——数据的缓存区
  3. python字典统计排序 统计各省份大学数量_1641统计字典排序元音字符串的数量(递归,递归),数目,递推...
  4. Web Worker 你知道吗?
  5. java虚拟机缩写为_(01-03)Java虚拟机缩写为。
  6. java lazy_Java AtomicLong lazySet()用法及代码示例
  7. 说一下你对多态的理解?_如何去理解java中的多态?从jvm角度分析也许让你更清晰...
  8. Linux系统关机重启,登录root用户,图形界面和字符界面,创建用户,删除用户,查看虚拟控制台用户,切换虚拟控制台
  9. 20211109:DC综合的一些简单概念理解记录
  10. 20201008:力扣209周周赛题解(下)