#深入浅出设计模式

PHP 设计模式之观察者模式

观察者模式(Observer)是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。当对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。它使用的是低耦合的方式...

PHP 设计模式之三种工厂模式

通过静态方法传入不同的参数创建不同的对象,实现对象创建和使用的分离<?phpclassmysql_conn{private$dbh=null;private$host='localhost';private$port='3306';private$user='root';private$password='***...

PHP 设计模式之单例模式

单例模式(SingletonPattern):顾名思义,就是只有一个实例。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。1、PHP语言本身的局限性PHP语言是一种解释型的脚本语言,这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言...

php分享二十二:设计模式

策略模式与观察者模式的区别:策略是我现在方法有几个东西我传入不同的参数就能拿到不同的东西,就像是spring中的populate,我传入不同的handler对象进来返回的可以是javaBean或者是javaBean的list集合或者是map,而观察者就是观察,比如web中监听而不是过滤,还有安卓四大组件contentP...

PHP设计模式之策略模式

前提:在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(HardCoding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法...

设计模式培训之一:为什么要用单例模式?

我们在编程中最常用的模式就是单例模式了,然而单例模式都用在什么场合?为什么不用静态方法而要用单例模式呢?要搞清这些问题,需要从静态方法和非静态方法的区别和联系说起。 一、静态方法常驻内存,非静态方法只有使用的时候才分配内存? 一般都认为是这样,并且怕静态方法占用过多内存而建议使用非静态方法,其实这个...

PHP设计模式系列

观察者模式观察者设计模式能够更便利创建和查看目标对象状态的对象,并且提供和核心对象非耦合的置顶功能性。观察者设计模式非常常用,在一般复杂的WEB系统中,观察者模式可以帮你减轻代码设计的压力,降低代码耦合。场景设计设计一个订单类订单创建完成后,会做各种动作,比如发送EMAIL,或者改变订单状态等等。原始的方法,是将这些操...
代码星球 代码星球·2020-06-17

JavaScript中常见的十五种设计模式

在程序设计中有很多实用的设计模式,而其中大部分语言的实现都是基于“类”。在JavaScript中并没有类这种概念,JS中的函数属于一等对象,在JS中定义一个对象非常简单(varobj={}),而基于JS中闭包与弱类型等特性,在实现一些设计模式的方式上与众不同。本文基于《JavaScript设计模...

设计模式之备忘模式

fromcopyimportdeepcopyimportlogging,time#备忘模式中主要有三个角色:发起人(需要进行备份的对象)、备忘录(备份的状态,即一个备份的文档)、备忘录管理者(备份文档的管理者,由他负责人与发起人的交互)#应用场景:1、需要保存/恢复对象的状态或数据时,如游戏的存档、虚拟机的快照#2、需...
代码星球 代码星球·2020-06-14

设计模式之工厂模式

fromabcimportABCMeta,abstractmethodfromenumimportEnum#工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式#简单工厂模式:定义一个创建对象(实例化对象)的接口,通过参数来决定创建哪个类的实例#工厂方法模式:定义一个创建对象(实例化对象)的接口,让子类来决定创建哪个对象...
代码星球 代码星球·2020-06-14

设计模式之中介模式

"""中介模式:用一个中介对象来封装一系列的对象的交互,中介者使各对象不需要显示地相互引用,从而使耦合松散,而且可以独立地改变他们之间的交互比如:房客与房东之间的交互过程是由中介来承担的,房客不需要知道房东是谁,房东也不需要知道房客是谁,有什么问题,直接找找中介就可以了。中介模式的三个对象:交互对象、中介者、具体中介者...
代码星球 代码星球·2020-06-14

设计模式之命令模式

fromabcimportABCMeta,abstractmethod#命令模式四个角色:命令、接收者、调度者、用户#对命令的发送者和接收者进行解耦,高内聚#其中的调度者有点像Scrapy框架中的Scheduler,对请求和响应进行调度classCommand(metaclass=ABCMeta):"""命令的抽象类"...
代码星球 代码星球·2020-06-14

设计模式之策略模式

fromabcimportABCMeta,abstractmethodfromoperatorimportitemgetter,attrgetter#策略模式:三个角色:上下文环境、策略的抽象、具体的策略#简而言之:定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换。classPerson:def__in...
代码星球 代码星球·2020-06-14

设计模式之适配模式(变压器模式、包装模式)

fromabcimportABCMeta,abstractmethodimportos#适配模式的三个角色:目标、源对象、适配器#适配模式的实现方式:组合、多继承classTarget(metaclass=ABCMeta):"""目标类"""@abstractmethoddeffunction(self):passcl...

设计模式之构建模式

fromabcimportABCMeta,abstractmethod#产品#构建者#指挥者classToy(metaclass=ABCMeta):"""玩具"""def__init__(self,name):self._name=nameself.__components=[]defgetName(self):ret...
代码星球 代码星球·2020-06-14
首页上一页...2526272829...下一页尾页