春天里,百花香...
Object Orient Programming
Java面向对象编程
摘要: 在基于Model2的应用中,控制层的类总会包含对业务层诸类的调用,业务层诸类不可避免的要产生各种异常,如果统一到控制层进行处理的话会导致代码变得庞大臃肿还有不少重复,这种的例子在Web应用中的Servlet和Action诸类中并不少见。
如果我们使用模板方法模式(Template Method Pattern)将业务处理和异常处理分开,能有效简化控制层诸类的代码,借用这种模式,我们可以把固定的异常处理代码放在基类中,而让子类来实现具体的业务,如果执行业务过程中出现异常如数据库无法连接,用户找不到等异常后,直接将异常抛出让基类来处理,这样做成功的把业务处理和异常处理分开到了子类和基类两种类中,涉及具体业务处理的子类代码得到了很大的简化,更方便阅读,修改和管理。
有点疑惑的是,现在还不确定这样做会有什么消极印象,如安全性或结构方面的,大家要是觉得有问题请不吝赐教。
阅读全文
摘要: 权限设计是很多系统重要的组成部分,主要用于控制功能和流程,本文将几种常见的权限设计方案(权限系统的名都是自己起的)的基本设计写出来,其中不恰当处还请大家指出,我们来讨论一下.
阅读全文
摘要: 转化效果:
阿拉伯数字等于:0 大写汉字等于:零整
阿拉伯数字等于:3.14159 大写汉字等于:叁点壹肆壹伍玖
阿拉伯数字等于:101.3 大写汉字等于:壹佰零壹点叁
阿拉伯数字等于:10203040506070809 大写汉字等于:壹萬兆零贰佰零叁兆零肆佰零伍億零陆佰零柒萬零捌佰零玖整
阿拉伯数字等于:7897645 大写汉字等于:柒佰捌拾玖萬柒仟陆佰肆拾伍整
阿拉伯数字等于:500000001000000 大写汉字等于:伍佰兆零壹佰萬整
阿拉伯数字等于:2435685 大写汉字等于:贰佰肆拾叁萬伍仟陆佰捌拾伍整
阿拉伯数字等于:5345438976 大写汉字等于:伍拾叁億肆仟伍佰肆拾叁萬捌仟玖佰柒拾陆整
阅读全文
摘要: 软件的核心任务不外乎是收集和整理数据,然后以用户需要的形式表现给他们而已,此外还有数据的存储,数据的传输等外围任务。
数据的收集,整理,表现,存储和传输就是软件的主要任务,它们也是程序员的主要工作内容,也是程序员编写代码的最终目的。
那么该如何编写代码让软件完成它的主要任务呢?编写代码的过程是否有规律可循?编写代码需要注意那些方面的问题?本人想就这些问题罗列自己一些粗浅的看法,并大家进行一些探讨。
阅读全文
摘要: 领域层类可以理解为程序运行时数据流的功能单位,而服务层类是为领域层类提供服务的,常见的服务有增删改查等操作,在没有泛型之前,我们只能采用一个服务类为一个领域类提供服务的方案,如果说服务的性质类似,如都是增删改查等,则代码的功能重复性很高,维护起来也很麻烦.如果采用了泛型类,我们就可以把性质相似的服务类归纳成一个,很大程度上能简化编码.
阅读全文
摘要: 一个解析文本中的信息并向对象赋值过程的思考,比较浅显.
阅读全文
摘要: private的成员变量能被子类继承吗?回答是父类的所有成员变量包括私有成员变量都会被子类继承,private只是把可见性限制在改类内部的方法中而已,子类仍然可以通过父类的成员函数来访问不可见的从父类继承下来的私有成员.
这个机制对于复杂的类体系中保护父类不被滥用很有好处.
阅读全文
摘要: 我们有时会遇到对同一个内存区域如数组或者链表进行多线程读写的情况,一般来说有以下几种处理方式:
1.不加任何限制,多见于读取写入都很快的情况,但有时也会出现问题.
2.对读写函数都加以同步锁,比如使用singleton模式,这下问题是没了,但效率也下去了,比如说两个读取线程不是非要排队进入不可.
3.读写锁,安全和效率都得到了解决,特别合适读线程多于写线程的情况.也就是下面将要展现的模式.
读写锁的本意是分别对读写状态进行互斥区分,有互斥时才加锁,否则放行.互斥的情况有:
1.读写互斥.
2.写写互斥.
不互斥的情况是:读读,这种情况不该加以限制.
我们只要让锁对象知道当前读写状态就可以了,再根据情况进行锁定和解锁,然后再分情况进行锁定.请看代码
阅读全文
摘要: 这篇文章是"调度员,工人及任务的OO分析过程"的续篇.
上次的情况是由调度员主动分配任务,但有些情况下需要工人自动取得任务而不是由调度员分配,这时需要对线程进行通知,使用的主要方法就是对象的wait(),notify(),notifyAll()三个函数,它们都必须从同步方法(synchronized method)中调用.
阅读全文
摘要: 日常编码中,我们常需要为各种业务进行建模,为工厂中的任务调度建模就很有意思的,它的主要流程是基本是这样:
1.调度员将工件图纸交付给工人,这是任务的下达.
2.工人工作,完成工件,这是任务的进行过程.
3.工件完成后,工人将图纸和工件返还给调度员,或者到了确定的时间后由调度员去取.这是任务的完成.
4.重复上述三个步骤.
在这个流程中,还存在一些特征:
1.工人可以有多项任务,但他在一个时间只能做一个活,具体做那个由任务的优先级确定.
2.任务完成后要让调度员知道,现实中是工人来找调度员或者调度员找工人来实现的.
从上述情况分析,我们需要任务,工人,调度员三个类来完成建模,另外为了方便任务的存储和管理,还需要一个任务串类来辅助.
阅读全文
摘要: 级联对象与相应XML之间的互相转化是在制作Web Service或者JMS程序时常遇到的问题,此文讨论了如何简化级联对象和相应XML的相互转化程序的方法.
阅读全文
摘要: 控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现它.
总结起来,在C#中创建控件数组很简单,首先在类中创建一个控件类型的数组,然后初始化它,具体初始化是动态创建还是链接到已有控件可以根据情况自行选择,然后为数组元素添加事件,最后实现事件即可,在事件实现中即可以通过转化sender来得到相应控件.
阅读全文
sitinspring(http://www.blogjava.net)原创,转载请注明出处.