随笔分类 - 设计模式
摘要:注入对象,改变行为。 这是一个很有意思的模式,它可以有多种表现形式,只要满足注入对象,改变行为。 学习这个模式,必须忘记网上和书上的标准类图。 案例 Comparator: Arrays.sort(T[], Comparator) 注入不同的Comparator,排序的方式也不同。 这是最常见的策略
阅读全文
摘要:使用不同的标准来过滤一组对象。在过滤器链里不断地doFilter() 案例 spring SecurityFilterChain 以下代码省略了许多无关代码。 // FilterChainProxy 类 private void doFilterInternal(ServletRequest req
阅读全文
摘要:使用不完全匹配的功能(目的是合并)。 案例 AOP BeforeAdvice 黄色是适配器,把橙色装入紫色,变成蓝色的子类,供绿色使用。 就完成了橙色到蓝色的适配。 黄色代码: public MethodInterceptor getInterceptor(Advisor advisor) { Me
阅读全文
摘要:把两个对象组合起来,配合工作(目的是分离)。 将两个维度的功能组合起来,使其独立变化。 比如Spring中的分层,把controller、service和dao层分开,就是桥接。
阅读全文
摘要:用于创建重复的对象,同时又能保证性能。 就是克隆。 比如 spring @Scope(“prototype”),太复杂了,没空研究。
阅读全文
摘要:确保一个类只有一个实例,并提供一个全局访问点。 这个最经典的就是Spring了,在Spring中创建单例太简单了,这里不介绍Spring。 构造函数私有化提供全局访问点 懒汉式 class Single { public final static Single INSTANCE = new Sing
阅读全文
摘要:把复杂的构建过程封装起来,这种模式用途很广泛,所有以Builder结尾的类几乎都是建造者模式。 比如最常用的StringBuilder,从它的使用上可以看出建造者模式的易用性极强。 StringBuilder builder = new StringBuilder(); builder.append
阅读全文
摘要:按系列生产 案例 数据库驱动 生产mysql驱动系列对象,可以方便的扩展其他驱动,只需引入对应的jar包
阅读全文
摘要:将工厂类抽象出一个接口,对象的创建方法延迟到工厂子类去实现。 案例 spring getBeanFactory()
阅读全文
摘要:由于很多人对这种模式有偏见,认为它是有缺陷的,我要给他正个名: 它并不是一个真正的模式,但是也有他的应用场景,所谓不要拘泥于模式 作用:由一个工厂类负责一种产品对象的创建。把对象的使用和创建分开,便于集中管理。 优点:简单易懂 应用场景:不变的业务,因此并没有违背对修改关闭,因为不可能修改它;也没有
阅读全文
摘要:最重要的原则 找出可能变化的部分,独立出来,不要和不需要变化的代码混在一起面向接口编程,不要针对实现编程多用组合,少用继承松耦合对象之间的交互对扩展开放,对修改关闭依赖抽象,不依赖具体类最少知识原则,一个类对于其他类,知道的越少越好别调用我,我会调用你一个类只有一个引起变化的原因 警惕 为实际需要而
阅读全文

浙公网安备 33010602011771号