23。现在在设计一个自己用的多线程的程序。架构什么完全自己来设计,在实际的设计过程中,产生了一个这样的疑惑。就是是否需要把一个线程内做的事情,压缩成一个进程。估计说的有点模糊
public interface Task {
public void execute();
}
这是一个接口。execute为要执行的任务的具体执行方法。那么问题也就是,如此的一个接口是否需要继承Runnable接口?这个问题,目前为止还没有正式决定。所以我这里只能说说我的想法和暂时的决定。
基本的思路,还是降低耦合度。如果让Task继承Runnable接口。那么任务的具体执行就必须要以一个线程的角度来思考。换句话说,Task是 Runnable的,是其一个特例。这看起来很美。但是要由于一旦这样的耦合,那么Task如果想要扩展,就会变得相当的麻烦,因为它和线程已经耦合。比如说我要在execute之前执行一个操作A,之后,需要做一个操作B。那么我必须修改execute代码。或者用Spring的AOP。但是如果不是这样做,又感觉做的很麻烦。类很多。
24。由于很喜欢Spriong的DI。写手机程序的时候不能用Spring。所以就自己模仿着Spring来写一个建议的Factory类。基本实现,用的是反射。不过遇到了个问题。
public Object getBean(String bean,Object...args)
这个方法的实现过程中,比方说有个这样的类
class Foo{
public Foo(Object object){
}
}
但是如果调用工厂方法的getBean( bean,new String("test"))总是报找不到方法的错误。这才明白,确定方法的时候,参数的子类不能用来确定方法。后来写了一个,才解决问题。
protected Constructor<?> getConstructor(String bean,Class<?>[] argtype) throws NoSuchMethodException{
Constructor<?> result = null;
//get class by bean name
Class<?> beanclass = this.getClassObject(bean);
//get constructor's array
Constructor<?>[] bean_cons = beanclass.getConstructors();
Class<?>[] cons_type; //the arg type for each constructor
//loop the constructor's array and find the constructor
for(Constructor<?> constructor:bean_cons){
cons_type = constructor.getParameterTypes();
if(cons_type.length==argtype.length){
try{
for(int i=0;i<cons_type.length;i++){
//check each arg's class is same or is sub class for the
if(!(cons_type[i].equals(argtype[i])||
cons_type[i].isAssignableFrom(argtype[i]))){
throw new HasNotFoundException(); //这个异常只是为了代码的美观。
}
}
result = constructor;
return result;
}catch(HasNotFoundException e){
}
}
}
throw new NoSuchMethodException();
}
25。回到那个Task。现在先用一个ThreadTask,继承Task和Runnable来解决问题。也算是面向对象的优势吧。可以通过继承,来提供另一套的解决方法。
26。这只能算是一个尝试吧。
public interface Task {
public void execute();
//这只是一个标志类
public static interface TaskProperty{
}
}
因为每个Task所需要的信息完全不相同。所以想要把其信息封装成一个一个TaskProperty。这样进行的不知道效果会怎么样?
至少现在有点感觉画蛇添足的感觉,因为这样可以使得每个Task能够解耦。但是却使得TaskProperty封装了起来。不过觉得这样做能够使得行为和数据分离。对这一块还是很不了解。慢慢。看写好后的效果怎么样。
分享到:
相关推荐
【关于《Python核心编程》(第二版)】 【关于本文档】 【关于作者】 【致谢】 第一部分:Python核心 第一章 欢迎来到Python世界 第二章 快速入门 第三章 Python 基础 第四章 Python对象 第五章 数字 第六...
四年专业英语单词快速记忆...我们在这里总结了编程语言中常用到15类编程语言中的,编程英语单词4300多个,以后还会不断的增加,并给出了这些英语单词的快速记忆方法,“编程语言快速记忆手册”将助您十倍速的学习编程。
一款相当好的jdbc资源。给大家分享一下
|适用范围| 2 一.变量命名 2 二.常量命名和宏定义 5 三.函数命名 5 四.结构体命名 6 五.结构化编码约定 6
一、导入表注入 2 二、挂起线程注入 12 ...五、注册表注入 28 六、钩子注入 32 七、APC注入 37 八、远程线程注入 41 九、输入法注入 45 十、DLL劫持 52 Ring3注入总结 58 关于Ring3下的反注入思路 60
《中文编程:学习进阶》结合编程语句和运行结果图对各项重点功能进行介绍,并通过书中编程案例的实践和习题辅助读者及时进行总结。 本书适用于初步掌握了易语言中文编程技巧的编程爱好者。 中文编程:...
NOC图形化编程全真模拟题十五套是一套专门针对NOC图形化编程软件的模拟考试题库。这套题库包含了十五套不同难度和...通过反复练习和总结,学习者可以更快地掌握NOC图形化编程技能,为日后的实际应用和考试打下坚实基础
第五章 DirectX基础和令人生畏的COM DirectX基础 COM:这是Microsoft的工作,还是魔鬼的? 应用DirectXCOM对象 COM的前景 总结 第六章 首次接触:DirectDraw DirectDraw界面 创建DirecDraw对象 ...
本书是作者十余年编程生涯中的技术和经验的总结。内容涵盖了从认识CPU、Windows运行机理、 编程语言的运行机理,到代码的规范和风格、分析方法、调试方法和内核优化,内有作者对许多问题 的认知过程和透彻的分析,...
Linux 作为一个庞大的体系,有很多相关的研究领域,总结起来大致有五个方向: 一、服务器维护:需要了解Linux 服务,熟练使用Shell,了解网络配置。 二、服务器开发:需要学习Linux 程序设计和Linux 网络编程。 ...
十五个经典算法研究与总结,欢迎各位算法爱好者下载学习
本书论述高质量软件开发方法与C++/C编程规范共十五章,分两部分: 第一部分共四章,重点介绍软件质量和面向对象程序设计方法。 第二部分共十一章,重点阐述C++/C编程风格和一些技术专题。 本书以幽默的笔调对软件...
MacTalk 成书主要来自读者的热情和出版方的邀约,作者重新对文章进行了梳理,对内容进行增补、删减和校对,形成了五大主题共计五十二篇文章,这五个主题包括:Mac、程序员与编程、科技与人文、人物、工具。...
第五课 对话框 5.1对话框和控件的基本概念 5.2 对话框模板的设计 5.3 对话框类的设计 5.4 非模态对话框 5.5 标签式对话框 5.6 公用对话框 5.7 小结 第六课 控件 6.1 传统控件 6.2 新型Win32...
第五课 对话框 5.1对话框和控件的基本概念 5.2 对话框模板的设计 5.3 对话框类的设计 5.4 非模态对话框 5.5 标签式对话框 5.6 公用对话框 5.7 小结 第六课 控件 6.1 传统控件 6.2 新型Win32...
C#网络应用编程第三版(人民邮电出版社)课后上机练习实验 实验五 WCF和TCP消息通信练习 关键技术是自承载的WCF服务、回调(CallBack)、TCP双工通信。 此代码仅供参考。
中文名: 编程实践:Java进阶100例 原名: 编程实践:Java进阶100例 别名: Java 作者: 李相国等. 译者: 李相国等. 图书分类: 软件 ...Java行业是一直被业界看重的既有前景又有钱景的行业,越来越...第十五章:网络编程
基于ssm少儿编程管理系统(源码 + 说明文档) 第二章开发技术介绍 1 2.1 系统开发平台 1 2.2 平台开发相关技术 1 2.2.1 Java技术 1 2.2.2 mysql数据库介绍 1 2.2.3 MySQL环境配置 1 2.2.4 B/S架构 2 2.2.5 SSM框架 ...
高清英文PDF版 《java虚拟机并发编程》是java并发编程领域的里程碑之作,由资深java技术专家、并发编程专家、敏捷开发专家和...第五部分:后记,回顾了本书讨论的解决方案并总结了并发编程中的注意事项和最佳实践。
87年 美国Anis编程者 最佳贡献奖 88年 日本Tooksmash C++版块年度最佳文章 88年 日本HotGrrl最佳作者奖 89年 进入C++标准委员会,拥有绝对投票权 等等。。。 梁博士辉煌的一生无不是值得我们歌颂与学习的 读完这...