博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(一)
阅读量:5100 次
发布时间:2019-06-13

本文共 1508 字,大约阅读时间需要 5 分钟。

设计模式

设计模式一般分为三类

创建型模式、结构型模式、行为型模式。

思想:高内聚低耦合-软件中变化的部分和不变的部分分开

创建型

用来创建对象的:单例模式、建造者模式、工厂模式、抽象工厂模式、原型模式

行为型

描述类或者对象是怎样交互和怎样分配职责的:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

结构型

用于处理类或者对象的组合:适配器模式装饰模式代理模式、外观模式、桥接模式、组合模式、享元模式

单例模式

比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。

Runtime()方法就是单例设计模式进行设计的。

思想:

1,不让其他程序创建该类对象。

2,在本类中创建一个本类对象。

3,对外提供方法,让其他程序获取这个对象。

饿汉式

class Single{    private Single(){}                      //私有化构造函数。    private static Single s = new Single();     //创建私有并静态的本类对象。    public static Single getInstance(){      //定义公有并静态的方法,返回该对象。        return s;    }}

懒汉式:延迟加载方式

class Single{    private Single(){}                         private static Single s = null;     //声明,但未实现对象。    public static Single getInstance(){          if(s==null)        s = new Single();            //创建实例对象,懒。      return s;                        }}

懒,此处会造成线程不安全(线程是CPU分片,如果还未执行完,另一个线程也执行,那么就是两个对象。)

双重加锁

class Single{    private Single(){}                         private volatile static Single s = null;     // volatile     public static Single getInstance(){            if(s==null){                         // 第一重,判断空      synchronized(Single.class){      // 同步块,线程安全地创建实例          if(s==null)                     // 第二重,判空               s = new Single();                         return s;      }      }    }}

提示:由于volatile关键字可能会屏蔽掉虚拟机中一些必要的代码优化,所以运行效率并不是很高。因此一般建议,没有特别的需要,不建议大量采用,可以根据情况来选用。

 

转载于:https://www.cnblogs.com/RobertLionLin/p/11484493.html

你可能感兴趣的文章
Python【11】【前端编程】- HTML基础
查看>>
nump库的简单函数介绍
查看>>
好程序员大数据点睛:Hadoop基础篇
查看>>
JVM内存模型和GC机制
查看>>
201571030323/201571030334《小学生四则运算练习软件需求说明》结对项目报告
查看>>
SequenceFile介绍
查看>>
安卓 代码混淆与打包
查看>>
AT&T汇编语言及其寻址方式
查看>>
ubuntu下 java、mysql、tomcat(ssl认证) 配置
查看>>
linux命名详解及其软件安装实例
查看>>
查看iOS沙盒(SanBox)文件
查看>>
数据结构与算法
查看>>
顺时针打印矩阵
查看>>
[转载]Chrome 与 Chrome OS 各版本下载集合
查看>>
面试微软前必须要读的十本书
查看>>
hadoop的安装和配置
查看>>
spinnaker
查看>>
hdu 1599 find the mincost route(无向图的最小环)
查看>>
转载:解读CSS布局之-水平垂直居中(2)
查看>>
第十八章 30限制数组越界
查看>>