klxedu / blog

2 stars 0 forks source link

产品组件扩展方案v1.0 #9

Open eriklight opened 7 years ago

eriklight commented 7 years ago

扩展方案说明

本次扩展方案,主要针对普视化的字段扩展,包括对扩展字段的业务规则定义、数据层查询等。

重新定义代码结构

分层扩展结构

数据层

数据层,综合考虑了目前最常见的字段扩展,就是项目自定义属性,为保证产品业务的独立性。将数据层的结果和实现业务进行拆分,简单的说,就是将Mybais xml文件中的查询结果(sql、resultMap)分离。另外,用户可以在扩展的dao中定义自己的查询业务。

产品对象

产品对象中会包含基本的字段验证,包括:必填、唯一、格式等,如果项目需要自定义或重写,请重写产品字段get方法即可。


public class Course implements Serializable {
private static final long serialVersionUID = -7601747238335476406L;
private String id;
private String title;
private String description;
private String teachers;
private String classify;

//getter and setter

} public abstract class CourseQueryBasic extends Query {

private String queryId;
private String queryTitle;
//getter and setter

}

**扩展对象**

public class CourseResult extends Course{ private static final long serialVersionUID = 1954492459158028325L; private int courseLength; public int getCourseLength() { return courseLength; } public void setCourseLength(int courseLength) { this.courseLength = courseLength; } } public class CourseQuery extends CourseQueryBasic {

}


## 接口层

> 接口层扩展,主要以抛出扩展接口为主要实现方式,具体以每次项目需求为输入完善扩展设计。

## 视图层

> 要从根本上实现视图层的扩展,完善的配置型方案基本不太可行,也经过各种尝试,扩展性设计现阶段感觉只会限制项目组二次开发的扩展需求,所以界面覆盖开发是必然的,关键是如何覆盖,如何开发,怎么减少产品升级带来的merege工作量。界面模版化?

### 方案一 > 界面字段配置化实现

> 实现思路:通过配置文件实现界面列表字段、表单字段、操作等配置化实现,类似指令的操作方式。

- 优点
  - 规则内二次开发便捷
  - 不需理解复杂的产品代码逻辑
  - 产品升级工作量小
- 缺点
  - 规则外的二次开发技术难度较大
  - 产品改造工作量相对较大

### 方案二 > 界面代码开放

> 实现思路:js中提炼复用性逻辑,抽成factory,特定逻辑在ctrl中实现。html结构清晰化展示,便于二次开发调整。

- 优点
  - 复用灵活
  - 二次开发难度低
- 缺点
  - 产品功能升级较大