23种设计模式中,自己比较熟悉的6种模式
2016-04-13 16:53
344 查看
1.迭代器模式
它提供一种方法来访问容器中对象的各个属性,却又不暴露对象的内部细节。一般直接使用iterator
2.单例模式
确保某一个类只有一个实例,并且自行实例化,并向整个系统提供该实例
public class singleton{
private static final Singleton singlton=new Singleton ();
private singleton(){
}
public static Singleton getsingleton(){
return singleton;
}
}
优点:避免实例的重复创建,比较节约内存。
3.工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类,将一个类的实例化,延迟到其子类上。可以看成NEW一个对象的代替品。
优点:在数据库开发中,如果使用JDBC连接数据库,数据库从MYSQL切换到ORACLE,需要改动的地方就是切换一个驱动名称(前提条件SQL语句是标准语句),其他的都不要修改。
4.抽象工厂模式
为创建一组相关或相互依赖的对象提供一个接口,它是工厂方法模式的升级版本。
5.原型模式
不能过NEW来产生一个对象,而是通过对象复制来实现的模式。
原型模式的核心:实现cloneable接口,覆写clone()方法
6.代理模式
为其他对象提供一种代理以控制对这个对象的访问
代理类可以为真实角色预处理消息,过滤消息,转发消息,以及事后处理消息等功能
分为普通代理,强制代理
spring AOP是一个典型的动态代理
struts2的FORM元素映射到对象上,也是代理模式。
它提供一种方法来访问容器中对象的各个属性,却又不暴露对象的内部细节。一般直接使用iterator
2.单例模式
确保某一个类只有一个实例,并且自行实例化,并向整个系统提供该实例
public class singleton{
private static final Singleton singlton=new Singleton ();
private singleton(){
}
public static Singleton getsingleton(){
return singleton;
}
}
优点:避免实例的重复创建,比较节约内存。
3.工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类,将一个类的实例化,延迟到其子类上。可以看成NEW一个对象的代替品。
优点:在数据库开发中,如果使用JDBC连接数据库,数据库从MYSQL切换到ORACLE,需要改动的地方就是切换一个驱动名称(前提条件SQL语句是标准语句),其他的都不要修改。
4.抽象工厂模式
为创建一组相关或相互依赖的对象提供一个接口,它是工厂方法模式的升级版本。
5.原型模式
不能过NEW来产生一个对象,而是通过对象复制来实现的模式。
原型模式的核心:实现cloneable接口,覆写clone()方法
6.代理模式
为其他对象提供一种代理以控制对这个对象的访问
代理类可以为真实角色预处理消息,过滤消息,转发消息,以及事后处理消息等功能
分为普通代理,强制代理
spring AOP是一个典型的动态代理
struts2的FORM元素映射到对象上,也是代理模式。
相关文章推荐
- .NET 4.0 中的契约式编程
- mysql学习之二:mysql基本使用方法
- PHP处理一个5G文件,使用内存512M的,数据为整形,从大到小排序,优化排序算法
- Android Studio rename module Can't rename root module
- 常见Web前端开发笔试题
- iOS限制输入长度
- 2-puppet自动注册
- maven project 部署到tomcat时项目部署不上去
- 2.字符设备驱动
- Xcode使用介绍之六:常用快捷键
- yii2 安装
- MySQL关于Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
- Python一日一练15----归并排序
- Direct2D Intro - Flip and Rotate a Bitmap Source
- lightoj 1297 - Largest Box 三分查找
- 1-puppet安装
- 【转载】第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
- 第八周学习笔记——进程切换和一般执行过程
- Python字典笔记
- Git Command