读书人

ZK经典用法-模板方法方式(更新)

发布时间: 2012-10-13 11:38:17 作者: rapoo

ZK经典用法---模板方法模式(更新)
一 模板方法模式简介(Template Method Pattern Introduction)
模板方法模式主要用于对算法或者行为逻辑进行封装,如果多个类中存在某些相似的算法逻辑或者行为逻辑,可以通过将这些相似的逻辑提取到模板方法类中实现,然后让相应的子类根据需要实现某些自定义的逻辑。

二 ZK的原理
1)ZK是一个页面对应着一个类,而每个页面,基本上都有很多的相似操作.例如:增加,删除,修改,查询等等.因此我们很容易想到如何把相同的逻辑抽去出来呢?模板方法模式为我们提供了良好的解决方案.下我给出所有的代码.
下面的解决方案只代表特殊,不代表普遍,具体的模板还需要根据项目中的应用具体设计.^-^
模板类可以被多个页面继承,而不需要重新编写,如果个位读者实在没有明白,我在近几日内更新文章,写出一个具体的例子与大家分享.
2)结构说明,下面的图是我这个例子中用到的项目情况

index.zul和index2.zul,对应着数据库中的2个表.他们的后台代码IndexUI.java和IndexUI2.java中,却没有增加按钮的事件,而是写到了父类中,public final void onClick$btnInsert() ;这样所有的增加操作就可以共享一个代码了.删除,修改等原理也是如此.略
mysql数据库表结构


IndexUI.java 书籍后台管理类


persistence.xml JPA配制文件
    1 楼    1927105    2010-08-11              观摩了,没用过,lz是做J2EE的么?    2 楼    IcedCoffee    2010-08-11              这就是模板?未免太简单了吧?
3 楼 IcedCoffee 2010-08-11 zk是好东西... 4 楼 robyjeffding 2010-08-11 ZK是一套以 AJAX/XUL/Java 为基础的网页应用程式开发框架,用於丰富网页应用程式的使用界面。最大的好处是,在设计AJAX网路应用程式时,轻松简便的操作就像设计桌面程式一样。 ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性的引擎,同时还提供了多样丰富、可重复使用的XUL与HTML组件,以及以 XML 为基础的使用介面设计语言 ZK User-interfaces Markup Language (ZUML)。   ZK 提供超过60个XUL组件及80个XHMTL组件。举凡listbox, slider, audio, slider, tree, combobox, tabbox, auto-completion等均有支援。ZK 亦提供 FCKeditor 和 Dojo的组件,让使用者直接以Java控制,无须使用 JavaScript。   ZK是一套开放源码、相容於 XUL/HTML 标准、Java写成的开发工具。 5 楼 shore1111 2010-08-11 模板其实跟重写差不多 6 楼 85977328 2010-08-11 1927105 写道观摩了,没用过,lz是做J2EE的么?
恩,长期从事J2EE的开发工作
7 楼 tiger860709 2010-08-11 LZ,这个例子有点简单,看不出来ZK到底有多么神奇。。。。呵呵 8 楼 85977328 2010-08-12 tiger860709 写道LZ,这个例子有点简单,看不出来ZK到底有多么神奇。。。。呵呵
看了你的建议以后,我把代码再次更新了。这次把全部代码都贴出来了
如果有深度使用ZK的朋友,一定能体会我这个模板方法带来的优越性 9 楼 szbaony 2010-08-12 简单扼要,建议补充下,在项目开发中这么处理,有何好处,主要是针对新手,帮新手理解原理 10 楼 85977328 2010-08-12 szbaony 写道简单扼要,建议补充下,在项目开发中这么处理,有何好处,主要是针对新手,帮新手理解原理
好的,明天我给补充上~,~ 晚上我回去酝酿 11 楼 KimHo 2010-09-20 这个模板方法模式,貌似跟ZK没多大关系吧
12 楼 cknet 2010-09-20 <p>和ZK比较相似,国内开源的Javaweb框架,更多突出业务积累</p>
<p>?</p>
<p><a href="http://code.google.com/p/simpleframework/">http://code.google.com/p/simpleframework/</a></p>
<p>?</p>
<p>demo: </p>
<p><a href="http://222.35.91.208:9000/">http://222.35.91.208:9000/</a></p> 13 楼 jimoshutong 2011-03-02 我们也在用ZK,是3.6.4版本。不过感觉有的地方还是很不习惯,强制转换太多了。 14 楼 cczakai 2011-03-02 模板用来将不变的行为抽离为父类,去除子类中重复代码。

目前MVC很多都要去Dao

其实我们在写Dao时候可以抽象出一些不变的方法比如:
add
update
delete
query
或者get/set
放入抽象父类中实现代码,

Dao:Interface

AbstractDao implements Dao{

public void add(){
getInstance().add();
}
public void update(){
System.out.println("Dao update");
}

public Dao getInstance();

}

ConrectaDao extend AbstractDao {

public void add(){
System.out.println("ConrectaDao+add()");
}
public void mymethod(){
System.out.println("ConrectaDao+mymethod()");
}


public Dao getInstance(){
return this;
}

}

}


client:

ConrectaDao dao = new ConrectaDao();

dao.add();
dao.update();
dao.mymethod();


读书人网 >软件架构设计

热点推荐