工厂模式
工厂方法或类生成对象,而不是在代码中直接new
单例模式
定义某个类的对象仅允许创建一个
场景:数据库的连接只需要实例化一次,在整个会话过程中,都是使用这个实例
注册树模式
全局共享和交换对象
场景:在项目中的配置的设置和读取
适配器模式
可以将截然不同的函数接口封装成统一的API
场景:比如mysql的连接,支持mysql,mysqli,pdo
比如缓存,支持session,memcache,redis
策略模式
将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
场景:比如一个电商网站系统,针对男女性别用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告
数据对象映射模式
将数据对象和数据存储映射起来,是一个对象的操作会映射为数据存储操作
场景:现在常用的php框架,mode操作数据库基本都是使用该模式
观察者模式
当一个对象状态发生改变时,依赖它的对象全部会收到信息,并自动更新
优点:实现低耦合,非入侵的通知与更新机制
场景:一个员工入职,要通知人事,财务以及该员工所在部门的领导
原型模式
与工厂模式的原型实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建对象。这样就免去了类创建时的重复工作
场景:原型模式使用于大对象的创建。因为创建一个大对象需要很大的开销,如果每次都new就会消耗很大,原型模式仅需要内存拷贝即可
装饰器模式:
一个类提供了一项功能,如果要再修改并添加额外功能,传统的编程模式,需要写一个子类继承它,并重新实现类的方法。使用装饰器模式,仅需要再运行时添加一个装饰器对象即可实现,可以实现最大灵活性
迭代器模式
提供一种方法顺序访问一个聚合对象中的各个元素,而又须暴露该对象的内部表示
代理模式
在客户端与实体之间创建一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节。proxy还可以实现业务代码的分离,部署到另外的服务器,业务代码中通过RPC来委派任务
例子:
常用框架数据库的操作:代理模式 + 适配器模式 + 单例模式 + 数据对象映射模式