`
chandler
  • 浏览: 81564 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编程总结(五)

阅读更多

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封装了起来。不过觉得这样做能够使得行为和数据分离。对这一块还是很不了解。慢慢。看写好后的效果怎么样。

0
0
分享到:
评论

相关推荐

    对于ISP编程进入不了编程模式的总结

    ### 对于ISP编程进入不了编程模式的总结 在进行ISP(In-System Programming,即在线编程)操作过程中,经常会遇到无法进入编程模式的情况,尤其是在使用像智峰软件zf-007系列这样的下载器时更为常见。本文将针对ISP...

    linux操作系统下c语言编程入门,经典总结

    ### Linux操作系统下C语言编程入门:经典总结 在IT领域,尤其是软件开发中,Linux操作系统与C语言结合,成为了一种极为重要的技能组合。本文旨在深入解析Linux环境下C语言编程的关键知识点,涵盖从基础概念到高级...

    Windows网络编程总结

    ### Windows网络编程总结 #### 一、网络编程基础概述与要点 Windows下的网络编程主要依赖于Winsock API,这是微软为TCP/IP等网络协议提供的应用程序接口。本文将围绕这一主题展开,归纳网络编程中的关键点。 ####...

    linux UDP编程总结和实例

    **五、实例分析** 一个典型的例子可能是音频或视频流传输,其中客户端向服务器请求数据,服务器则实时发送数据。在这种情况下,客户端可能需要处理数据包乱序、丢包等问题。 **六、问题及解决策略** 1. **丢包问题*...

    总结java_socket编程

    Java Socket 编程总结 Java Socket 编程是 Java 网络编程的基础,java 中的 Socket 编程主要是基于 TCP/IP 协议的网络编程。下面将总结 Java Socket 编程的主要知识点。 一、网络编程基本概念 在 Java 网络编程中...

    C++Socket编程总结.doc

    本文将基于"C++Socket编程总结.doc"文档中的示例代码,深入解析TCP和UDP通信机制下的Socket编程流程,并探讨阻塞与非阻塞模式的差异,以及如何在实际开发中应用这些技术。 #### 二、TCP通信模式 TCP(传输控制协议...

    plc编程及应用课后练习答案.pdf

    本资源摘要信息将对PLC编程及应用课后练习答案的主要知识点进行概括和总结,涵盖以下几个方面: 一、PLC编程基础 * PLC编程语言:STL、LAD、FBD等 * PLC编程结构:顺序控制、分支控制、循环控制等 * PLC编程指令:...

    CCF编程能力等级认证(GESP)真题与答案 考点知识点总结GESP考级真题 提纲 知识点总结CCF编程能力等级认证(GES

    CCF编程能力等级认证(GESP)真题与答案 考点知识点总结 GESP考级真题 提纲 知识点总结 CCF编程能力等级认证(GESP)真题1到8级 已更新至2024年9月,持续更新中,链接永久有效持续更新 内容包括: 1. Scratch图形化 1-...

    Jdbc第五章数据库实例

    **JDBC第五章数据库...总结,JDBC第五章的数据库实例是学习JDBC应用的重要环节,涵盖了从连接数据库、执行SQL语句到处理结果集、事务控制等多个方面。掌握这些内容将为开发高效、稳定的Java数据库应用打下坚实基础。

    linux网络编程总结.zip

    五、I/O模型 在Linux网络编程中,有多种I/O模型可供选择:阻塞I/O、非阻塞I/O、多路复用I/O(select、poll、epoll)、信号驱动I/O和异步I/O。每种模型都有其优缺点,开发者需要根据应用场景选择合适的模型。 六、...

    Access数据库和VBA编程总结.pdf

    Access数据库和VBA编程总结.pdf Access数据库是一种关系数据库管理系统,可以用于存储和管理大量数据,而VBA(Visual Basic for Applications)是一种编程语言,经常用于自动化Access数据库的操作和开发应用程序。...

    windows环境下C语言多线程实现网络编程,多人聊天室,[总结].pdf

    Windows 环境下 C 语言多线程实现网络编程多人聊天室总结 在 Windows 环境下实现多人聊天室需要使用 C 语言和多线程技术来实现网络编程。下面是关于这个主题的知识点总结: 第一部分:Windows Socket 编程 * 使用...

    C#高级编程知识点总结

    第五章讨论了对象和类型,如引用传递与值传递的区别,值类型和引用类型的赋值行为,以及结构和类的差异。属性提供了一种封装数据的方式,Object类是所有.NET类的基类。 后续章节继续涵盖了数组和集合、委托和事件、...

    CSDN VC编程经验总结.rar

    五、多线程编程 在现代软件开发中,多线程技术不可或缺。VC++提供了对线程的支持,包括创建线程、同步线程、线程间通信等。理解并熟练运用多线程,可以提升程序的并发性和执行效率。 六、调试与优化 VC++集成的调试...

    Python编程笔记 Python开发知识总结整理 Python核心笔记 共51页.pdf

    Python编程笔记是对Python开发知识的全面总结和整理,旨在帮助读者深入理解和掌握这门流行的高级编程语言。笔记分为两大部分,第一部分是Python的核心概念,第二部分涉及更高级的主题。 在前言中,作者可能介绍了...

    华中8型数控系统PLC编程说明书(V2.4)_华中数控编程资料_

    总结,华中8型数控系统PLC编程说明书是一份全面的指导文档,对于希望在华中数控系统上进行有效编程的工程师来说,它是不可或缺的工具。通过深入学习和实践,可以提高编程效率,保证加工质量,从而提升整个制造过程的...

    Windows编程总结

    ### Windows编程总结 #### 第一章 Windows编程基础 ##### 一、Windows编程基础知识 1. **MFC(Microsoft Foundation Classes)**:这是微软提供的一套类库,旨在为Windows编程提供方便。MFC通过一系列封装良好的...

    C++游戏编程之五子棋编程列解

    总结,C++五子棋编程涉及到面向对象的设计、基本图形界面编程、内存管理、用户交互以及游戏逻辑的实现。这对于学习C++和游戏编程的初学者来说是一个很好的实践项目,因为它涵盖了多个编程基础知识,并且结果可直接...

Global site tag (gtag.js) - Google Analytics