- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式1.ppt
设计模式Design Patterns 概述 导致重新设计的一般原因 通过显式指定一个类来创建对象 对特殊操作的依赖 对硬件和软件平台的依赖 对对象表示和实现的依赖 对算法的依赖 紧耦合 通过生成子类来扩充功能 不能方便地对类进行修改 概述 继承、组合、参数化类型 类继承与接口继承的比较 继承与组合的比较 继承与参数化类型的比较 概述 可复用模式 概述 什么是设计模式 设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。 概述 设计模式编目 创建型模式 创建型模式的目的 使系统独立于如何创建、组合和表示对象。 类创建型模式使用继承改变被实例化的类。 对象创建型模式将实例化委托给另一个对象。 什么是单例(Singleton)模式 作为对象的创建模式[GOF95],单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的三个要点: 只能有一个实例; 必须自行创建这个实例; 它必须自行向整个系统提供这个实例。 0.什么是单例(Singleton)模式 一个例子:Windows 回收站 在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。 1.单例模式的结构 单例类的简略类图如下所示。 2.单例模式的实例化形式 饿汉式单例类 饿汉式单例类是在Java 语言里实现得最为简便的单例类。 此类自己将自己实例化. 2.单例模式的实例化形式 饿汉式单例类代码清单: public class EagerSingleton { //加载时就实例化 private static final EagerSingleton m_instance = new EagerSingleton(); //私有的构造方法 private EagerSingleton() { } //静态工厂方法 public static EagerSingleton getInstance() { return m_instance; } } 2. 单例模式的实例化形式 懒汉式单例类 与饿汉式单例类相同之处是,类的构造方法是私有的。 与饿汉式单例类不同的是,懒汉式单例类在第一次被引用时将自己实例化。如果加载器是静态的,那么在懒汉式单例类被加载时不会将自己实例化。 2. 单例模式的实例化形式 懒汉式单例类代码清单: public class LazySingleton{ private static LazySingleton m_instance = null; private LazySingleton() { } //静态工厂方法,在获取实例时才实例化 synchronized public static LazySingleton getInstance(){ if (m_instance == null){ m_instance = new LazySingleton(); } return m_instance; } } 3.在什么情况下使用单例模式? 使用单例模式的条件 使用单例模式有一个很重要的必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来说,如果一个类可以有几个实例共存,那么就没有必要使用单例类。 但是做到上面这一点并不容易,下面就是一些这样的情况。 4.在什么情况下使用单例模式? 例子一 问:我的一个系统需要一些“全程”变量。学习了单例模式后,我发现可以使用一个单例类盛放所有的“全程”变量。请问这样做对吗? 答:这样做是违背单例模式的用意的。单例模式只应当在有真正的“单一实例”的需求时才可使用。 一个设计得当的系统不应当有所谓的“全程”变量,这些变量应当放到它们所描述的实体所对应的类中去。将这些变量从它们所描述的实体类中抽出来,放到一个不相干的单例类中去,会使得这些变量产生错误的依赖关系和耦合关系。 4.在什么情况下使用单例模式? 例子二 问:我的一个系统需要管理与数据库的连接。学习了单例模式后,我发现可以使用一个单例类包装一个Connection 对象,并在finalize()方法中关闭这个Connection 对象。这样的话,在这个单例类的实例没有被人引用时,这个finalize()对象就会被调用,因此,Connection 对象就会被释放。这多妙啊。 答:这样做是不恰当的。除非有
您可能关注的文档
- 苏州耦园位于江苏省苏州市内仓街小新巷.doc
- 苏联模式和中国特色社会主义模式谈谈对科学社会主义实践的看法.doc
- 药品生产企业在生产和质量管理中存在的问题及专家解答.ppt
- 菲尼克斯现场总线和INTERBUS现场总线.doc
- 蒋思纯核武器资料.ppt
- 蒙牛培训资料.ppt
- 蓝凌JAVA产品部开发环境.doc
- 蔬菜工厂化育苗讲座1.ppt
- 虎1坦克的资料.doc
- 融资性担保公司确立申报材料说明.doc
- 浙江金华市公共资源交易中心永康市分中心编外人员招考聘用笔试历年典型考题及考点研判与答案详解.docx
- 浙江宁波慈溪市政协办公室招考聘用编外工作人员笔试历年典型考题及考点研判与答案详解.docx
- 浙江金华永康市西溪镇人民政府招考聘用笔试历年典型考题及考点研判与答案详解.docx
- 福建南平市公安局建阳分局招考聘用辅警笔试历年典型考题及考点研判与答案详解.docx
- 浙江嘉兴海盐县武原街道基层残疾人工作专职委员(公益岗位)招考聘用笔试历年典型考题及考点研判与答案详解.docx
- 浙江宁波知识产权保护中心招考聘用工作人员笔试历年典型考题及考点研判与答案详解.docx
- 浙江杭州建德市面向2024届普通高校毕业生招考聘用教师(第二批)16人笔试历年典型考题及考点研判与答案详解.docx
- 浙江省台州中学面向2024届普通高校毕业生招考聘用教师12人笔试历年典型考题及考点研判与答案详解.docx
- 湖北师范大学体育学院专任教师招考聘用笔试历年典型考题及考点研判与答案详解.docx
- 重庆市南岸区教育事业单位面向2024届高校毕业生招考聘用114人笔试历年典型考题及考点研判与答案详解.docx
文档评论(0)