一、单例设计模式懒汉(线程安全问题)同步锁,每次判断锁,效率低,外层再加一个判断是否为空,效率高 1、私有化构造方法 2、声明引用类型变量,不要创建对象 3、声明静态方法获取本类对象,判断是否已经创建了本类的对象,如果已经创建了直接返回,没有则创建引用类型变量返回 二、装饰者设计模式增强一个类的功能,还可以让这些类互相装饰通过继承增强一个类的功能:优点:代码结构清晰易懂缺点:使用不灵活,会导致...
今天重温了一下策略模式,将自己的一些感悟与大家分享。。。本人只是技术渣渣,所理解的东西的难免会有很大的局限性甚至是错误,还请各位带着批判的眼光去看待。。。。不喜请勿吐槽 定义:策略模式属于设计模式中的对象行为型模式,它将用到的算法单独抽象成一个单独的类。通常,我们在多个类完成同一件事情,仅仅完成的方式不同时,我们可以考虑使用这种设计模式。 举例:相信,很多人在看到“假如有以下...
10分钟一个设计模式系列The Decorator Pattern1.Basic 基础为何称这个模式为Decorator模式呢。我们先来看一个例子,一家咖啡店,有很多种类型的饮品,如DarkRoast, HouseBlend, Espresso等等。不同类型的饮品,还能加入不同的调料,例如牛奶,Mocha, 大豆等等。那么这样这些饮品将会有多种各式各样的组合类型。那么在设计的时候,不容置疑需要一个类作为各种饮品的基类,这个类我们可以命名为Beverage,Beverage类有cost()方法以...
转载自 http://www.cnblogs.com/zhili/p/CompositePattern.html 一、引言在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的麻烦,然而作为客户,它们希望能够始终一致...
定义 组合(Composite Pattern)模式也叫合成模式,用来描述部分与整体的关系。英文原话是:Compose objects into tree structures to represent part-whole hierarchies.Composite lets clients treat individual object and compositions of objects uniformly.意思是:将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式分为三个角色: 1.抽象构件(Component...
设计模式:对问题行之有效的解决方式。其实它是一种思想。1.单例设计模式。 解决的问题:就是可以保证一个类在内存中的对象唯一性。(单个实例) 使用单例设计模式需求:必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。 如何保证对象唯一性? 解决步骤: 1.不允许其他程序用new创建该对象。 ...
享元模式 运用共享技术有效地支持大量细粒度的对象。 享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。 内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。 外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态与内蕴状态是相互独...
门面模式这是一种组织性的模式,它可以用来修改类和对象的接口,使其更便于使用。它可以让程序员过得更轻松,使他们的代码变得更容易管理。门面模式有两个作用:简化类的接口消除与使用她的客户代码之间的耦合一个简单的门面模式var addEvent = function(el, ty, fn){var cases = [function(el, ty, fn) { el.addEventListener(ty, fn, false); },function(el, ty, fn) { el.attachEvent(‘on‘+ty, fn); },function(el, ty, fn) {...
1. 模式动机在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。通过引入一个新的对象(如小图片和远程代理 对象)来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式,通过引入代理对象来...
一、代码组织(目录结构)二、mvc概述MVC设计模式即MVC框架。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中...
书中的例子都比较浅显易懂,不过由于是外国佬写的,所以例子的习惯不是很附合中国特色,可能偶尔看起来有些别扭,还有语言习惯也不是中国风。当然??看过这本书之后,你才能深刻理解设计模式到底能为你解决哪些问题,不能为你解决哪些问题(比如不能代替你的编码)。 我将书中部分代码改成PHP,看下代码再配合概念应该是比较容易理解了。 策略模式 代码如下:1. head first设计模式 《Head First 设计模式》代码之PHP版面向对象...
单例 文章目录单例目标01. 单例设计模式单例设计模式的应用场景02. `__new__` 方法03. Python 中的单例只执行一次初始化工作 目标单例设计模式 __new__ 方法 Python 中的单例01. 单例设计模式设计模式设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性单例设计模式目的 —— 让 类 创建的对象,在...
一、引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的麻烦,然而作为客户,它们希望能够始终一致地对待简单对象和复合对象。然而组合模式就是解决这样的问题。下面...
基本需求:组建一个家庭影院:DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能, 其过程为:直接用遥控器:统筹各设备开关 开爆米花机、放下屏幕、开投影仪、开音响、开 DVD,选 dvd、去拿爆米花、调暗灯光、播放、观影结束后,关闭各种设备传统方案:客户端直接依赖各种设备,直接调用各种设备的方法 UML类图在Client中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程...