设计模式 之 什么是设计模式?
来源:互联网 发布:java文件夹命名规则 编辑:程序博客网 时间:2024/06/04 23:28
什么是设计模式?
我们在发现问题到解决问题这个过程中,常会发现很多问题是重复出现的,或是某个问题的变体,外在不同,而本质相同,建筑学上如是,软件行业也是,这些问题的本质就是模式。
这里给出项目中经常遇到的一个问题,配置文件读取问题。假如我们在项目中有一个配置文件(Properties),在运行时需要从它里面读取内容,我们可能会出现如下代码来读取文件:
- public static String getProperty(String propKey) throws Exception{
- Properties prop = new Properties();
- InputStream propConfFile = Util.class.getClassLoader().getResourceAsStream("configure.properties");
- //载入propConfFile到prop中,从prop中获取propKey的值,并将其返回
- //进一步操作...
- return property;
- }
这里大家可以看到,每次我们要获取一个配置项,都需要去读取一次文件,这样的消耗是比较大的。而我们也知道,在产品系统(客户上线系统)中,配置项一般是不变的,所以这里的代码的代价就显得比较高了(如果是在开发阶段这样的代码是可以接收的),并且如果出现高并发有可能会出现文件读取上的瓶颈(多个线程访问同一个文件)。这里我们可以引入一个模式来解决这个问题。既然配置项是不变的,我们可以引入一个单例来解决这个问题,如:
- import //略
- public class PropertiesUtil ...{
- private static Map propertiesMap = null;
- public static String getProperty(String propKey) throws Exception ...{
- if (propertiesMap == null) ...{
- //当propertiesMap为空时,载入文件,将其键值对放入propertiesMap中(略)
- }
- //在propertiesMap中获得propKey属性,并将值返回(略)
- }
- }
上述代码不是经典的单例模式。这里能找到的单例是其中的Map,我们可以看到在PropertiesUtil中,该Map只可能存在一个实例。这样我们就可以保证只有一个实例的存在,也可以避免多次加载配置文件的问题。注意,这里没有考虑多线程,如果需要考虑需要在if(propertiesMap == null)里加入对线程的控制。
关于设计模式的概念,我在这里先给出一个我认为比较准确的概念。如下:
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样你就可以一次又一次的使用该解决方案而不做重复性的劳动。设计模式有四个基本要素:模式名称、问题、解决方案、效果。
- 设计模式 之 什么是设计模式?
- 设计模式之什么是设计模式
- Java设计模式之什么是设计模式
- 设计模式前奏之什么是设计模式?
- 什么是设计模式
- 1.1什么是设计模式
- 什么是设计模式
- 什么是设计模式?
- 什么是设计模式
- 什么是设计模式
- 什么是设计模式?
- 什么是MVC设计模式
- 什么是MVC设计模式
- 到底什么是设计模式?
- 什么是设计模式?
- 什么是设计模式
- 到底什么是设计模式?
- 什么是设计模式
- 【转】不能显示隐藏文件解决方法
- C语言常用宏定义技巧
- 职场新鲜人不能不知酒桌潜规则
- 5月24号
- Class.forName 介绍
- 设计模式 之 什么是设计模式?
- 外语学习的真实方法与误区6
- linux下安装JDK和TOMCAT
- office project如何制定项目计划
- GL一般要配置的选项及其顺序(R12)
- BS注册用户
- 遵循placement new的用法规范
- 递归下载FTP目录的win32 api实现和php实现
- 公路运输统计调查数据处理系统:YSDC09