模板方法设计模式
模板方法设计模式
1.说明
核心是:定义一个模板类,在模板类中规定其整体的骨架并确定哪些方法是允许子类可以去重写的,哪些是不允许子类去重写的.用来保证核心算法不被破坏.
2.修饰词说明
修饰词 | 使用位置 | 说明 |
---|---|---|
final | 修饰方法 | 定义那些不想被子类重写的方法,常见于定义整体的数据流转结构 |
abstract | 修饰方法 | 定义那些需要子类去具体实现的方法 |
3.代码范例
模板类(抽象类)
@Component
public abstract class AbstractResGroupManageService implements ResGroupManageService {
/**
* 不允许子类去重写的,必须要用父类提供的功能逻辑
**/
public final void saveOrUpdateResGroupAndRules(AlarmDescDetailsDto request) {
saveOrUpdateResGroup(request);
saveOrUpdateAlarmRules(request);
saveOrUpdateAppInfoRelation(request);
saveOrUpdateMemberRelation(request);
saveInstanceCount(request);
}
/**
* 必须子类去实现的,父类不提供功能
**/
abstract void saveOrUpdateResGroup(AlarmDescDetailsDto request);
abstract void saveInstanceCount(AlarmDescDetailsDto request);\
abstract void saveOrUpdateAppInfoRelation(AlarmDescDetailsDto request);
abstract void saveOrUpdateMemberRelation(AlarmDescDetailsDto request);
}
4.扩展
使用到了抽象类abstractClass,刚好说明在使用模板方法的设计模式时时候抽象类,而不使用接口
如果接口中指定必须实现的方法,和可选实现的方法,怎么操作
可以参考javax.servlet中的Filter过滤器接口设计,必须实现的方法不加任何修饰,可选实现的方法加个default修饰符,当类需要去实现接口的时候,就可以实现或者不实现.达到这种效果.
修饰符 | 编写位置 | 说明 |
---|---|---|
default | 接口中的方法 | 修饰方法的时候,实现类可以不需要去实现它 |
public interface Filter {
default void init(FilterConfig filterConfig) throws ServletException {
}
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
default void destroy() {
}
}
5.优势,好处
用到了编程中的抽象的思想,去设计好整体的骨架.这是核心
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示