一.登录功能重构(符合单一职责原则)

在原始设计中,一个登录类承担了过多的职责:界面初始化、界面显示、输入验证、数据库连接获取、用户信息查询以及程序入口启动。这种设计导致类变得臃肿,任何一项职责的变更都可能影响到其他职责,同时也降低了代码的可读性和可维护性,违背了单一职责原则。
重构方法:将登录类中的各项职责拆分到多个独立的类中。具体来说,将界面初始化、界面显示和输入验证这三个紧密相关的界面层职责放在一个类中;将数据库连接的获取单独提取为一个类;将用户信息查询的职责也单独提取为一个类;程序入口则作为一个独立的启动类。拆分后,每个类只负责一项明确的职责,类之间通过清晰的依赖关系进行协作(界面类依赖查询类,查询类依赖连接类),既降低了耦合度,也提高了代码的可维护性和可测试性。重构后如图:

二.图表显示模块重构(符合开闭原则)

在原始设计中,图表显示类根据不同图表类型(饼状图、柱状图等)直接在方法内部判断并创建对应的图表对象。当需要新增图表类型时,必须修改该类的源代码,增加新的条件分支,这违背了开闭原则——对扩展开放、对修改关闭。
重构方法:引入一个抽象的图表接口,将各种具体图表(饼状图、柱状图)都实现该接口。图表显示类不再直接依赖具体图表类,而是依赖这个抽象接口。同时,通过工厂模式或依赖注入的方式将具体图表对象传递给显示类。这样一来,当需要增加新的图表类型时,只需新增一个实现接口的类,而无需修改已有的显示类代码,从而实现了对扩展开放、对修改关闭的目标。重构后如图:

