二·、spring成长之路——委派设计模式和单例设计模式
3.委派设计模式
设计思想:就是多个类去完成一项的工作,其中一个类去分发任务,其他类做具体的任务,而具体表现是这个委派类的工作,具体过程是被委派类来操作的
【ITask.java】定义工作的统一标准
package com.itcloud.pattern.delegate;
//意见任务需要多人进行完成
public interface ITask {
//不同的人更具任务标准完成不同的工作
void work();
}
【WorkerOne.java】被委托类
package com.itcloud.pattern.delegate;
public class WorkerOne implements ITask {
@Override
public void work() {
System.out.println("第一个人需要完成的事情");
}
}
【WorkerTow.java】被委托类
package com.itcloud.pattern.delegate;
public class WorkTow implements ITask {
@Override
public void work() {
System.out.println("第二个人需要完成的事情");
}
}
【Dispatcher.java】这个类就是负责任务的分发,将上级的任务分配到每一个类中
package com.itcloud.pattern.delegate;
//这项任务的完成,需要由一个人进行委派,领导级别的
public class Dispatcher implements ITask {
private Class<? extends ITask> clazz;
public Dispatcher(Class<? extends ITask> clazz){
this.clazz = clazz;
}
@Override
public void work() {
try {
clazz.getDeclaredMethod("work").invoke(clazz.newInstance());
} catch (Exception e) {
e.printStackTrace();
}
}
}
【DelegateTestDemo.java】测试类
package com.itcloud.pattern.delegate;
public class DelegateTestDemo {
public static void main(String[] args) {
Dispatcher dispatcher = new Dispatcher(WorkerOne.class);
dispatcher.work();
}
}
4.单例设计模式
无论从性能和安全的角度这个单例设计都是最优的
package com.itcloud.pattern.SingleInst;
public class SingleIns {
private static class generator{
public static final SingleIns INSTANCE = new SingleIns();
}
private SingleIns(){}
public static final SingleIns getInstance(){
return generator.INSTANCE;
}
}
此时我们也可以像JDK动态代理那样对生成的代理类进行字节码反编译。
爱生活爱分享欢迎您的关注与加入自学交流群:461265466
二·、spring成长之路——委派设计模式和单例设计模式的更多相关文章
- java软件设计模式只单例设计模式
概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...
- Java设计模式之单例设计模式 入门实例
一.基础概念 (1).单例设计模式:保证一个类在内存中的对象唯一性. (2).应用场景:数据都存储在配置文件的对象中,多个程序对同一个配置文件的对象进行操作.一个程序要基于另一个程序操作后的结果进行操 ...
- java设计模式之单例设计模式和多例设计模式
单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象:无论外部产生多少个实例化对象,本质上只有一个实例化对象 饿汉式单例设计 class Si ...
- Java设计模式之单例设计模式总结
package singleton; /**单例设计模式 饿汉式 * * @author gx *这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化, ...
- java设计模式之单例设计模式
单例设计模式 保证一个类在使用过程中,只有一个实例.优势就是他的作用,这个类永远只有一个实例. 优势:这个类永远只有一个实例,占用内存少,有利于Java垃圾回收. 单例设计模式关键点 私有的构造方法. ...
- 【Java】【设计模式】单例设计模式
思想: 为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式 代码体 ...
- JAVA的设计模式之单例设计模式
1.确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例. 1)理论 Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 使用Singl ...
- 【设计模式】单例设计模式的N中Java实现方法
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17359719 特点 单例模式的特点: 1.只能有一个实例: 2.必须自己创建自己的一个实例 ...
- java设计模式--解决单例设计模式中懒汉式线程安全问题
首先写个单例,懒汉模式: public class SingleDemo { private static SingleDemo s = null; private SingleDemo(){} pu ...
随机推荐
- MySQL order null 0 - 把null和0(零)排在最后
1.一般的order by 语句其返回的结果为 SELECT `vcenter_ip`, `status`, `sla_id` FROM vm_list ORDER BY sla_id ASC; 2. ...
- 在C#中internal、protected internal关键字是什么意思?
internal:就是程序集. 那么什么是程序集呢?就是“项目”也就是工程里中的csproj 比如:我有个解决方案,这个方案中有2个项目,1个是控制台程序,1个是webapi项目,那么我这个解决方案中 ...
- JavaScript停止事件冒泡和取消事件默认行为
功能:停止事件冒泡 function stopBubble(e) { // 如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) { ...
- 巧用花生壳将局域网内的FTP和www服务器发布到互联网
一.目的:用生壳发布FTP和mail服务器到互连网. 二.网络环境:(出租房多家共用路由器上网,ADSL的1Mbps带宽,动态PPPOE拨号,帐号和密码存储在soho路由器中,路由器自动联机上网,并为 ...
- [翻译] ASCScreenBrightnessDetector
ASCScreenBrightnessDetector ASCScreenBrightnessDetector lets you easily detect screen brightness cha ...
- [转发]CPU个数、CPU核心数、CPU线程数
我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与 ...
- WCF已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectio ...
- August 24th 2017 Week 34th Thursday
If you have choices, choose the best. If you have no choice, do the best. 如果有选择,那就选择最好的:如果没有选择,那就努力做 ...
- 一个“日期”字符串进行比较的case
项目中有个功能是比较会员是否过期,review同事的代码,发现其写法比较奇葩,但线上竟也未出现bug. 实现大致如下: $expireTime = "2014-05-01 00:00:00& ...
- java简单的工厂模式
定义:专门定义一个类来创建其他类的实例,被创建的实例通常都具有共同的父类和接口.意图:提供一个类由它负责根据一定的条件创建某一及具体类的实例 //简单工厂,存在不符合开闭原则的地方,可以在参考抽象工厂 ...