接口实现单例模式

<?php

//定义接口

interface Calc{

public function getValue($num1,$num2);

}

//创建实现接口的实体类

class Add implements Calc{

public function getValue($num1,$num2) {

return $num1 + $num2;

}

}

class Sub implements Calc{

public function getValue($num1,$num2) {

return $num1 - $num2;

}

}

class Mul implements Calc{

public function getValue($num1,$num2) {

return $num1 * $num2;

}

}

class Div implements Calc{

public function getValue($num1,$num2) {

try {

if($num2 == 0) {

throw new Exception(‘除数不能为0‘);

} else {

return $num1/$num2;

}

} catch (Exception $e) {

echo "错误信息:" . $e->getMessage();

}

}

}

//创建一个工厂,生成基于给定信息的实体类的对象

class Factory{

public static function createObj($operate) {

switch ($operate) {

case ‘+‘:

return new Add();

break;

case ‘-‘:

return new Sub();

break;

case ‘*‘:

return new Mul();

break;

case ‘/‘:

return new Div();

break;

}

}

}

$test = Factory::createObj(‘-‘);

echo $test->getValue(1,4);

?>

时间: 2024-10-06 03:04:54

接口实现单例模式的相关文章

【设计模式】单例模式

一.单例模式的定义 单例模式( Singleton Pattern) 是一个比较简单的模式, 其定义如下:Ensure a class has only one instance, and provide a global point of access to it.( 确保某一个类只有一个实例, 而且自行实例化并向整个系统提供这个实例. )单例类, 通过构造私有化确保了在一个应用中只产生一个实例, 并且是自行实例化的( 在Singleton中自己使用new Singleton()) . 二.单

设计模式系列(一)单例模式

一.用通俗的语言解释其意义:从秦始皇之后确立了皇帝的位置,且同一时期只有一个.因此大家在称呼的时候不需要为皇帝加上其他的前缀.这一过程反应在设计领域就是,要求一个类只能生成一个对象,所有对象对他的依赖都是相同的,因为只有一个对象,所以对象对他的依赖都是相同的,因为只有一个对象,大家对他都很了解.皇帝每天要处理很多的事情,但是皇帝只有一个,即一个类只有一个对象,对象产生通过new关键字完成,我们可以使用构造函数来控制,因为使用new关键字创建对象时都会根据输入的参数调用相应的构造函数,所以如果我们

单例模式详解

1 为什么有的工具类使用单例不使用static呢? 首先你要明白static 是在什么时候初始化的,其设计意图是是什么, 单例 就是我们运行的当前虚拟机中有且只有一个需要的对象,不存在重复. static 是给类静态成员变量使用的,属于类的属性,一般是一些常量之类的东西,从加载上来说对于类和对象之间,在类加载到内存时候静态成员变量就存在了,而对象还不存在, 另外 静态方法只能调用静态方法和静态变量这个你也应该知道,如果全部搞成静态方法那么意味着其他成员变量都要是静态的,很不方便,如果一天不要单例

PHP开发APP接口(七)

APP接口实例 单例模式连接数据库首页接口的开发以及客户端app的演示APP版本升级接口APP错误日志的接口 单例模式连接数据库学习要点:掌握单例模式设计php连接数据库 单例模式:一个类只能拥有一个实例:<?php class Db{    puclic function __construct(){ }} $db=new Db();$db1=new Db();普通的类可以产生多个实例 单例模式三大原则:1.构造函数需要标记为非Public(防止外部使用new操作符创建对象),单例类不能在其他

设计模式之禅之单例模式

转载:http://www.javaweb1024.com/java/Javajichu/2015/04/09/535.html 设计模式之禅 第一第二版下载地址 http://www.javaweb1024.com/info/403.jspx 第7章 单例模式 7.1 我是皇帝我独苗 自从秦始皇确立了皇帝这个位置以后,同一时期基本上就只有一个人孤零零地坐在这个位置.这种情况下臣民们也好处理,大家叩拜.谈论的时候只要提及皇帝,每个人都知道指的是谁,而不用在皇帝前面加上特定的称呼,如张皇帝.李皇帝

设计模式在项目中的应用

简单工厂设计模式在项目中应用 项目使用场景:根据不同的厂家,有不同的报表打印形式,而对于报表的打印他们有公共的部分,打印报表头.打印底部.和打印中间部分. 我们可以使用简单工厂模式,抽象出打印报表的接口,不同的厂家实现不同的打印接口. 单例模式在项目中应用 场景1:在DOM读取配置文件的时候,因为经常被用到这个类,我们可以设置一个全局类,不用每次都new那么多的类,节省资源消耗. 场景2:在spring的IOC依赖注入的时候,默认的是采用单例模式,例如controller层中一个类通过注入方式使

《js12种设计模式》

1.策略模式(Strategy): 定义了算法家族, 分别封装起来, 让它们之间可以互相替换. 比如Collections.sort(List list, Comparator c); 可以通过实现多个Comparator接口来达到多种排序的目的. 2.装饰着模式(Decorator): 动态的给一个对象添加一些额外的职责. 比如java.io包. BufferedInputStream封装了FileInputStream, 它们都实现了InputStream接口, 但前者实现了readLine

对java面向对象的初识

我其实一直想写点东西练练自己文笔,今天写下这篇技术类型的文章也没有一个好的格式和章法,但万事开头难,那么就从面向对象开始. 我们大部分人都知道互联网软件的存在,时刻影响了我们的现实生活,那么面向对象的编程思想就是从生活中来的,软件出现的目的就是为了描述现实世界,从而解决现实生活所需,究其一点:人的思想上刻画了现实世界,用编程语言来实现,而面向对象是最符合人的思考方式的.世界各样的事物靠分类来区别开来,有实例对象来行事特例行为,程序通过也同过类与对象来一一描叙清楚 开始来谈谈面向对象里常带有的概念

设计模式(三)单实例模式

引言 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生成器.如在Windows中就只能打开一个任务管理器.如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源:如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态.因此有时确保