第三章 【创建型设计模式】
来源:互联网 发布:淘宝网今日特价女装 编辑:程序博客网 时间:2024/05/18 03:11
模式: 模式描述的是具有代表性的重复性问题及其解答方案.
模式分类:
1)架构模式:架构是指一个软件系统整体的组织结构。架构模式描述软件系统的组织结构的一些规则和指南。
2)设计模式:设计模式描述的是在软件系统的某一局部不断重现的核心解决方案,这种解决方案以完善的设计结构出现,可以被应用到以后出现的类似的环境中。
设计模式的分类:
1)创建模式: 涉及对象的创建 (单例模式, 工厂模式, 建造者模式,原型模式)
2)结构模式:涉及类和对象的组合(Facade外观模式, 代理模式, 适配器模式, 装饰模式)
3)行为模式: 刻画了类和对象交换及分配职责的方式.主要目标是解耦(察者模式, 命令模式, 模板模式,策略模式)
工厂模式Factory:将对象的创建和对象的使用分开进行,这样可以减少类与类之间的耦合度
package com.lovo.factory;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class Factory {private static Properties pro = new Properties();static{InputStream in = Factory.class.getResourceAsStream("/tool.txt");try {pro.load(in);} catch (IOException e) {e.printStackTrace();}}/** * 更具键,得到改键对应值得对象 * @param key * @return */public static ITool getTool(String key){String path = pro.getProperty(key);try {//加载类,得到全路劲Class c = Class.forName(path);//产生该类对象Object obj = c.newInstance();return (ITool)obj;} catch (Exception e) {e.printStackTrace();}return null;}}
单例模式Singleton:
1)立即加载
<pre name="code" class="java">//立即加载(预加载)private Man(){};private static Man m = new Man();public static Man getMan(){return m;}
2)支持高并发延迟加载
<pre name="code" class="java">//支持高并发延迟加载private Man(){};private static Man m;public static Man getMan(){if(m==null){synchronized(Man.class){if(m==null){m = new Man();}}}return m;}
原形模式:通过复制和克隆的方式创建对象,这样无需知道创建对象的细节
浅度克隆:如果克隆对象有引用类型的属性,则和原对象引用类型的属性,指向同一个对象
public Object clone(){Object obj =null;try {obj = super.clone();} catch (Exception e) {e.printStackTrace();}return obj;}
深度克隆:克隆对象的引用类型的属性和原对象引用类型的属性,指向不同的对象,也就是本身对象克隆,引用类型指向的对象也克隆
/** * 深度克隆 * @return */public Student deepClone(){//创建内存写入流ByteArrayOutputStream bo = new ByteArrayOutputStream();ObjectOutputStream objOut = null;ByteArrayInputStream bi = null;ObjectInputStream objIn = null;try {objOut = new ObjectOutputStream(bo);//将当前对象数据写入到指定内存中objOut.writeObject(this);//建立内存读取流,读取之前写入内存的数据bi = new ByteArrayInputStream(bo.toByteArray());objIn = new ObjectInputStream(bi);Object obj = objIn.readObject();return (Student)obj;} catch (Exception e) {e.printStackTrace();}finally{try {objIn.close();bi.close();objOut.close();bo.close();} catch (Exception e) {e.printStackTrace();}}return null;}
0 0
- 第三章 【创建型设计模式】
- 《Android之大话设计模式》--设计模式 创建型模式 第三章:抽象工厂模式
- 第三章 创建型模式
- 第三篇、创建型设计模式——抽象工厂模式
- 翻转设计模式系列——第三部分--设计模式(3)--创建型模式大比拼
- js 设计模式 第三章
- iOS 第三章设计模式
- 创建型设计模式
- 创建型设计模式
- 设计模式(创建型)
- 创建型设计模式
- 创建型设计模式
- 设计模式-创建型
- 设计模式-创建型
- 设计模式(创建型)
- 创建型设计模式
- 设计模式----创建型
- 创建型设计模式
- 经典算法之河内之塔
- WEB安全:文件上传漏洞
- DB2恢复一例 SQL0928N
- 关于numpy的安装
- 程序猿笑话,放松一下。
- 第三章 【创建型设计模式】
- DB2 SQL0902C 一例
- Mina airQQ聊天 服务端篇(二)
- Light OJ 1174
- javasrcipt函数
- XML中的方法总结
- ArcGIS10.2安装中需要注意的问题
- 对大学的思考:一流大学应培养什么样的精英
- GWT里面的CSS样式单