可修改型战术:
可修改性战术就是致力于解决是否可以更加快速、安全的修改系统模块的方法,在设计模式上也最大程度的对应了单一职责原则。当我们设计代码时,就要做到对系统所有模块的代码分析,使类与类之间的耦合度降低,避免修改一个模块而波及到其他的模块造成的不便。
可修改性大致分为:
一.局部化修改:
1.预期期望变更:连接数据库代码,Dao层的代码,前端页面设计代码等进行分开编写,最大程度使变更影响达到最小
2.维持语义一致性
降低模块依赖性,不用或少用继承关系,多使用专用的借口来限制对相关服务的修改
3.泛华模块
数据库连接语句
4.限制选择参数
将软件系统限制在具体操作系统上运行,避免修改:如苹果store里的默认应用无法在安卓下载使用
二、防止连锁反应
1.信息隐藏
数据库代码模块隔离,不会影响其他模块
2.维持现有接口
多使用具体的接口来实现相应的工作:如官网教学系统,老师与学生的调用系统接口不一致
public interface Volume {
public abstract double getVolume();
}
public class Cylinder extends Circle implements Volume{
double h;
public Cylinder(double r,double h){
super(r);
this.h=h;
}
public double getArea(){
return h*getL()+2*getS();
}
3.限制通信路径
4.使用仲裁者
使用外部数据库存储数据
三、推迟绑定时间
1.运行时注册
在绝大多数网站的使用上,都加入了进行关键操作是要注册用户的指示
2.配置文件
利用数据库配置文件,启动时设置数据库连接参数
1 <?xml version="1.0" encoding="UTF-8"?> 2 <Context> 3 4 <!-- 定义数据源--> 5 6 <!-- 7 name:指定Resource的JNDI名字 8 auth:指定管理Resource的Manager,有两个可选值,Container表示由容器来创建和管理Resource 9 Application表示由Web应用来创建和管理Resource 10 type:指定Resource所属的Java类名 11 12 username:数据库用户名 password:连接数据库的口令 13 driverClassName:指定连接数据库的JDBC驱动器中的Driver实现类的名字 14 url:指定数据库的URL 15 16 注意:如果url中用到useSSL=true/false,则需要在所有的'&'后面加上"amp;"如下 17 --> 18 <Resource name="jdbc/BookDB" auth="Container" type="javax.sql.DataSource" 19 username="root" 20 password="Cz123" 21 driverClassName="com.mysql.jdbc.Driver" 22 url="jdbc:mysql://localhost:3306/Books?characterEncoding=utf8&useSSL=true"/> 23 24 </Context>