admin 管理员组文章数量: 1087139
【设计模式】
设计模式
- 单例模式
- 总结:
- 1. 单例模式的核心作用是什么?
- 2. 单例模式的常见应用场景?
- 3. 单例模式的优点?
- 4. 常见的主要的单例模式?
- 5. 单例模式如何实现?
- 6. 懒汉式和饿汉式的区别?
- 工厂模式
- 总结:
- 1. 什么是工厂模式?
- 2. 工厂模式的特点?
- 3. 主要基本原则
- 4. 工厂模式分类
- 5. 工厂模式的应用
- 6. 工厂模式用来解决什么问题。
- 代理模式
- 总结
- 设计模式共有23种,他是一种程序设计的思路,只要是面向对象语言,比如C#等其他的语言,都存在设计模式,代码不同,但是思路都是通的。
- 设计模式的分类:
- 主要学习单例模式和工厂模式。
单例模式
总结:
一句话总结:一个类在Java虚拟机中只有一个对象,并提供一个全局访问点。
生活中例子:太阳、月亮、国家主席等。
解决什么问题:对象的唯一性,性能浪费太多。
项目里面怎么用:数据库连接对象,属性配置文件的读取对象。
模式结构:分为饿汉式和懒汉式(如果考虑性能问题的话,就使用懒汉式,因为懒汉式是在方法里面进行初始化的),构造器私 有化,对外提供方法加同步关键字。
框架里面使用:Struts1的Action。
JDK里面使用:java.lang.Runtime#getRuntimejava.awt.Desktop#getDesktop。
1. 单例模式的核心作用是什么?
- 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
2. 单例模式的常见应用场景?
- 在项目种加载配置文件的类,一般也只是一个对象,没有必要重复加载。
- 一个项目种的数据库连接池,设计的时候一般是单例模式。因为数据库连接是一种数据库资源,保证提供一个对象来访问数据库资源。每次都new的话,很消耗资源。
- 在Spring种,每个bean默认就是单例的,这样做的优点是spring容器可以管理。
- springmvc中,控制器对象也是单例。
- 在serviet编程种,每个servlet也是单例。
3. 单例模式的优点?
- 单例模式只生成一个实例,减少了系统的开销。
- 单例模式可以在系统设置全局的访问点,优化共享资源的访问,例如设计一个单例类,负责所有数据表的映射处理。
4. 常见的主要的单例模式?
- 饿汉式:线程安全,调用效率高,但是,不能延时加载。
- 懒汉式:线程安全,调用效率不高,但是,可以延时加载。
- 静态内部类式:线程安全,调用效率高,但是,可以延时加载。
- 双重检测锁(由于jvm底层内部模型原因,偶尔出问题,不建议使用)
- 枚举单例:线程安全,调用效率高,不能延时加载。
5. 单例模式如何实现?
- 构造器私有。
- 提供一个私有的静态对象。
- 提供一个公共的静态方法,返回该对象。
6. 懒汉式和饿汉式的区别?
- 首先他俩的都是线程安全的。但是实现线程安全的方式不同,饿汉基于 classloder 机制避免了多线程的同步问题,懒汉方法加了同步锁。
- 饿汉没有延时加载,懒汉有延时加载。
- 饿汉没有同步锁,执行效率高于懒汉。
- 饿汉在类加载时就创建对象,浪费内存,资源消耗高于懒汉。
- 如果类的创建时代价很高,推荐使用懒汉式,节省资源,但是调用效率低。如果类的调用效率高,推荐使用饿汉式。
package com.aaa.test;
/*** 饿汉式* @author admin**/
public class SingletonDome {//私有的静态方法,当类加载时就创建对象。private static SingletonDome s = new SingletonDome();/*** 私有构造*/private SingletonDome() {}/*** 公共的全局的方法* @return*/public static SingletonDome getIntance(){return s;}}
/*** 懒汉式* @author admin**/
public class SingletonDome1 {//当类加载时,不创建对象,判断后在创建private static SingletonDome1 s;/*** 私有的构造方法*/private SingletonDome1() {}/*** 加上同步锁,保证线程安全。* @return*/public static synchronized SingletonDome1 getInstance(){if(s==null){s = new SingletonDome1();}return s;}}
工厂模式
总结:
一句话总结:用一个方法来代替new关键字
生活中的例子:制衣厂、面包厂等生产厂。
解决什么问题:对象产生过多,或者经常有子类替换生成。
项目里面怎么用:对于经常生成的对象,或者父子类替换的对象。
模式结构:写一个对外声明的方法,方法里面使用new关键字代替。
框架里面使用:spring的核心就是工厂模式。
JDK里面使用:newInstance。
1. 什么是工厂模式?
- 工厂模式就是帮我们实例化对象的,实现创建者和调用者分离。
2. 工厂模式的特点?
- 分工,专业的人干专业的事。
3. 主要基本原则
- 一共有六个。
- 开闭原则:一个软件的实体应当对扩展开放,对修改关闭。
- 依赖倒转原则:面向接口编程,不要针对实现编程。
- 迪米特法则:只要你直接的朋友通信,而避免和陌生人通信。解耦。
4. 工厂模式分类
- 简单工厂模式:用来生产同一等级结构中的任意产品。
- 工厂方法模式:用来生产统一等级结构中的固定产品。
- 抽象工厂模式:又来生产不同产品族的全部产品。
5. 工厂模式的应用
- spring的核心就是工厂模式
6. 工厂模式用来解决什么问题。
- 对象产生过多,或者经常有子类替换生成。解耦和。
代理模式
总结
一句话总结:为其他对象提供一个代理,以控制对当前对象的访问。
生活中的例子:房屋中介、婚姻介绍所。
解决什么问题:不能直接访问该对象,或者太大的资源耗费多。
项目里面怎么用:权限,或者大对象的访问权限。
模式结构:代理类和被代理类实现同一个接口,用户访问的时候先访问代理对象,然后让代理对象去访问被代理对象。
框架里面使用:Spring里面的AOP实现。
JDK里面使用:java.lang.reflect.Proxy。
本文标签: 设计模式
版权声明:本文标题:【设计模式】 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1687898392a154904.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论