设计模式笔记

最近在做一个项目,数据库访问接口时,自然而然地想到一次HTTP访问时,数据库只建立一次连接。也就是常听到的单例模式。既然涉及到了设计模式,就在图书馆拿了本书浏览下:虽然不学所谓设计模式,很多情况下用的方法也会和一些常用的设计模式重合,但是非常有必要将一些凌乱的编程经验,稍微总结一下提炼下。

下面内容参考自:《深入浅出设计模式》

一、单例模式

类中定义一个静态变量,顺便建立一个函数取处此变量;多线程时,加一次互斥锁即可。

二、简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式:大致是一个类只实现一种类型的功能。(据说有人滥用getter/setter导致代码异常臃肿)

抽象工厂模式:用于简化工厂模式,类似工厂太多了,将其合并到一个抽象工厂中,以便调用。

(属于不知道却自动会用的设计模式。)

三、原型模式(prototype)

  原来javascript的prototype来源于此!即新对象克隆自原先的对象。

  js中(1)在原型扩展的method/attribute,所有克隆自原型的对象共同拥有它

四、适配器模式

  应用场景:A有一个接口,返回int*类型的数据;但B需要vector类型的数据;C需要这些数据set类型的数据,怎么办?

  处理:B/C均继承原先对象,重写覆盖原先接口,将int*转换成vector/set,这就是适配器模式。

五、门面模式

  提供接口,但是尽量隐藏细节,相对于调用者来说是透明的。感觉和TCP/IP很像,每一层对于其上面的层都是透明的。

六、代理模式

  其实还是基于层次的分离。比如一次HTTP请求,需要过滤所有输入,防止恶意代码注入;如果让后端人员自己实现,很可能这边漏一点,那边漏一点;所以很自然的思路就是,独立出一个安全层(即所谓代理),所有get/post请求都会经过这个层,合法的请求会提供给后台,非法请求直接返回失败信息。

(属于不知道却自动会用的设计模式。)

七、享元(FlyWeight)模式

     应用:数据库连接池连接池技术。即在一次http连接后,数据库TCP连接并不释放,而是放入连接池中,供下一次连接使用;PHP由于没有常驻内存,每一次连接都会完全销毁旧连接数据,而java web服务器则没有这方面的问题。(php据说有第三方库可以实现连接池)

     之前在搞php mysql连接时,使用单例模式,也发现了这个问题:即使时单例模式,每一次连接依然需要一次数据库连接,再释放掉这个TCP连接;查了查,果然还有连接池技术,居然还叫享元模式。。。

其他以后再补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值