5.3.3 封装菜单结构
通过分析上面那段JSON格式的菜单结构,我们可以将按钮(菜单项)对象归为3类:click类型的按钮、view类型的按钮和复合类型的按钮。
注意 请不要将按钮的类型与按钮对象的归类搞混。按钮的类型只有click和view两种,而按钮对象的归类仅仅是笔者为了封装对象而做的划分。
每个按钮对象都有一个共同的name属性,因此需要定义一个按钮对象的基类,所有的按钮对象都需要继承该类。基类代码如下所示:
- /**
- * 按钮的基类
- *
- * @author liufeng
- * @date 2013-10-14
- */
- public class Button {
- private String name;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
1)click类型的按钮有type、name和key3个属性,对应的类代码如下:
- /**
- * click类型的按钮
- *
- * @author liufeng
- * @date 2013-10-14
- */
- public class ClickButton extends Button {
- private String type;
- private String key;
- public String getType() {
- return type;
- }
- public void setType(String type) {
- this.type = type;
- }
- public String getKey() {
- return key;
- }
- public void setKey(String key) {
- this.key = key;
- }
- }
2)view类型的按钮有type、name和url3个属性,对应的类代码如下:
- /**
- * view类型的按钮
- *
- * @author liuyq
- * @date 2013-10-14
- */
- public class ViewButton extends Button {
- private String type;
- private String url;
- public String getType() {
- return type;
- }
- public void setType(String type) {
- this.type = type;
- }
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- }
3)复合类型的按钮指的是含有子按钮的Button,也就是含有子菜单的一级菜单。对应的类代码如下:
- /**
- * 复合类型的按钮
- *
- * @author liufeng
- * @date 2013-10-14
- */
- public class ComplexButton extends Button {
- private Button[] sub_button;
- public Button[] getSub_button() {
- return sub_button;
- }
- public void setSub_button(Button[] sub_button) {
- this.sub_button = sub_button;
- }
- }
最后是整个菜单对象的封装,对应的代码如下:
- /**
- * 菜单
- *
- * @author liufeng
- * @date 2013-10-15
- */
- public class Menu {
- private Button[] button;
- public Button[] getButton() {
- return button;
- }
- public void setButton(Button[] button) {
- this.button = button;
- }
- }