快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

葡京娱乐官网下载安装:企业应用开发架构谈(三)



作为一个开拓职员,很多年以来我都贪图有一个可以 写出许多法度榜样的法度榜样,这样在系统开拓中历程中可以 节省若干光阴呀。

我一贯是一个很怠惰的人,编写法度榜样天生器让我认为 许多乐趣,经由过程他我省去了许多的重复性的劳动,大年夜大年夜 加快了开拓进程。法度榜样天生器的效率很高,在葡京娱乐官网下载安装开拓软件 的许多环节都可以大年夜显外行:数据持久化、界面、中心 件等等。

$:为什么必要法度榜样天生器?

我没有深入的钻研过这个问题,以是关于这个问题我无法 讲的很周全。不过从我的履历来讲,归纳起来有以下几点 :

1:抽象层次规范系统。 想象以下经由过程天生代码,你可以将实现技巧,算法,数据 布局等代码细节规范化,并对上层开拓职员完全樊篱。如 果必要改动实现,只必要简单的改动定义的规范即可。

2:事情分工 在叫大年夜规模的软件开拓中,开拓职员彼此间每每必要合营 掩护代码,造成小我自力地从事事情变的弗成能。而经由过程 法度榜样天生器为开拓职员供给了一种事情分工的有效办理手 段。

3:可以天生系列产品 你可以经由过程法度榜样天生器天生一系列的相关产品如:测试用 例、用户文档、图表、其他相关代码等等。

4:法度榜样族 经由过程成成,你可以针对同一问题,孕育发生不合的实现,而成 为一个法度榜样族,而不光是单一的特定系统。譬如:你可以 应用同一界面规范(xul)天生不合平台(windows,unix)的 实现。

5:精确性和同等性 即就是你一个有多年开拓履历的开拓职员,你对自己编写 的代码有几分信心?经由过程天生要领,可以大年夜大年夜削减差错。 软件开拓重构是免不了的,然则这每每会激发新的差错, 法度榜样天生器,使的改动也变的方便许多,改动抽象的规范 即可,从而削减改动所激发的差错。

6:优化你机能 可以这么说法度榜样天生器,让你有更多的光阴不必挥霍在重 复的编码中,从而有光阴去关注系统的机能。

$:理解法度榜样的三中可变性。

可变性有三种:

1.运行时可变性;编译时可变性;天生时可变性。 运行时可变性 运行时可变性的信息保存在一个外部文件中并经由过程法度榜样读入。 在castor jdo中便是经由过程将保存在设置设置设备摆设摆设文件中的工具关系映 射信息读入来实现持数据久化的。前一篇文章中所讲的设置设置设备摆设摆设 既是这种要领。 编译时可可变性 编译时将信息合并到法度榜样中。经由过程类与类的协作实现。 天生时可变性 将信息经由过程一个定制法度榜样的天生器读入。SUN的JDO规范既是 这种要领。将设置设置设备摆设摆设信息经由过程代码增强器读入到法度榜样中。天生 新的代码。

$:代码风格 天下上没有两片完全相同的叶子,同样的开拓职员编写的代 码在细节和布局上是不合的,而天生器天生的代应该是易维 护,轻易理解,便于改动的。因而我们必要明白的是天生和 手写必要遵照不合的规则。 规则1:为改动而设计。天生的法度榜样本生不紧张,紧张的是 规范,没人会去读你天生的法度榜样,他应该是对上樊篱的。

规则2:留意法度榜样的精确性。

规则3:更多的关注机能而不是可读性和布局。 法度榜样天生器天生的代码严格来讲有三种风格:

1:面向工具的驱动 以面向工具技巧来组织法度榜样的布局。功能长进行分化。便于 理解。

...............................................

........................................

2:面向代码的驱动 直不雅,简单的输出代码必要做增添从必要的规范处获取的信息, 代码布局紧凑,从手写不雅点来看,不便于改动,但动态输出无妨。

class Afrmae extneds Frame{ ............................ public void entry()

{ if(prop==start){ start(); }else if(prop==end){ end(); }else if(prop==suspend){ suspend(); }else{ System.exit(0); } } ............................ }

3:面向表格的驱动 数据与代码分离,规范信息存储在专门的数据布局中,代码在适 当时刻参照数据布局规复数据。

class Employee{ private int id ; public void setId(int newId){ this.id = newId; } public int getId(){ return id; } private String name; public void setName(String newName){ this.name = newName; } public Stirng getName(){ return name; } }

int

id ID String

name NAME ===> class Data{ //表数据。。。。 public String[] field={"ID","NAME"}; public String key = "ID"; public String tableName = "EMPLOYEE"; } class Employe葡京娱乐官网下载安装e implements Persistence{ class Data{ //表数据。。。。 public final static String[] field={"ID","NAME"}; public final static String key = "ID"; public final static String tableName = "EMPLOYEE"; } //........................ private int id ; public void setId(int newId){ this.id = newId; } publi葡京娱乐官网下载安装c int getId(){ return id; } private String name; public void setName(String newName){ this.name = newName; } public Stirng getName(){ return name; } public String getTableName(){ Data.tablename; } public String[] getField(){ .................... } ............................. } class DAO{ public makePersistence(Object o){ ..... sqlstart= "INSERT INTO "+getTableName葡京娱乐官网下载安装( "; int count = o.getField().length(); for(int i=0;i

$:感化要领 代码天生有两种感化要领:源代码和字节码。前者天生的代码 为源葡京娱乐官网下载安装代码,后者是在字节吗根基长进行代码增强。我把前者 称为白盒要领,由于对付开拓者来说可以看到天生码内部的 布局,好处是便于实现,不好处是对外透明,不便于樊篱; 后者成为黑盒要领,天生码对外不透明,对开拓职员完全屏 蔽实现,不轻易实现,必要掌握额外的api(BCEL 库).

您可能还会对下面的文章感兴趣: