代理模式
- 通过引入一个代理对象来实现对目标对象的功能增强,Spring Aop就是动态代理
- 相关文章:juejin.cn/post/743643…
单例模式
懒加载
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
立即加载
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
责任链模式
-
将处理某个请求的对象通过数组或链表串联在一起,让这些对象依次处理这个请求
-
过滤敏感词案例:
public class ApplicationDemo { public static void main(String[] args) { FilterChain chain = new FilterChain(); chain.addFilter(new SexyFilter()); chain.addFilter(new AdsFilter()); boolean legal = filterChain.doFilter(new Content()); if (!legal) { // 不发表 } else { // 发表 } } }public class FilterChain { private List<SensitiveFilter> filters = new ArrayList<>(); public void addFilter(SensitiveFilter filter) { this.filters.add(filter); } // return true if content doesn't contain sensitive words. public boolean doFilter(Content content) { for (SensitiveFilter filter : filters) { if (!filter.doFilter(content)) { return false; } } return true; } }public interface SensitiveFilter { boolean doFilter(Content content); } public class SexyFilter implements SensitiveFilter { @Override public boolean doFilter(Content content) { boolean legal = true; //... return legal; } } public class AdsFilter implements SensitiveFilter { @Override public boolean doFilter(Content content) { boolean legal = true; //... return legal; } }