![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Tao丶丶
和平精英快递员工
展开
-
SingletonPattern 单例模式
使用单例的场景: 一个全局使用的类频繁地创建与销毁。 使用单例的原因: 想控制实例数目,节省系统资源 原理: 判断是否已经有这个单例,如果有则返回,如果没有则创建。 构造函数是私有的。 /** *双检查锁,这样即提高了执行效率,同时也保证了线程安全; *但是有一个严重的reorder(指令重排)问题 *在下面的代码中,看似很美好,先判断是不是存在这个实例,如果不存在,则加锁。 *但是,在Java编译器中,实例化过程中,我们认为顺序是这样的:1.先分配内存。2.调用构造器。3.把内..原创 2020-07-27 17:37:49 · 102 阅读 · 0 评论 -
设计模式--Strategy(策略模式)
上一篇:设计模式–TemplateMethod(模板方法) 类别:组件协作 作用:在运行时根据需要透明地更改对象的算法。将对象与算法解耦。 模式定义:定义一系列算法,把他们封装起来,并且使他们可以互相替换。该模式使得算法可以独立于客户程序而变化(扩展,子类化 )。 策略模式的优点: 算法可以自由切换; 避免使用多重条件判断; 扩展性良好。 策略模式的缺点: 策略类会增多 所有策略类都需要对外暴露。 使用场景: 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使原创 2020-07-07 11:07:48 · 80 阅读 · 0 评论 -
设计模式--TemplateMethod(模板方法)
类别:组件协作(晚绑定) 场景:整体结构稳定,但是子步骤有很多改变 模式定义: * 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。 public abstract class AbsClass{ //基本方法 protected abstract void doSomething(); protected abstract.原创 2020-07-03 16:43:36 · 83 阅读 · 0 评论 -
设计模式--设计原则及模式分类
对系统,对模块有一个新的认知。“寻找变化点(需求频繁变化),然后在变化点用什么设计模式”“什么时候,什么地点应用设计模式”书籍推荐:重构与模式 重构-改善现有的代码结构>面向对象设计原则(DIP) 高层模块(稳定)不应该依赖于低层(变化),二者都应该依赖于抽象(稳定)。 抽象(稳定)不应该啊依赖于实现细节(变化),实现细节应该依赖于抽象。 开放封闭原则(OCP) 对扩展开放,对更改封闭。 类模块应该是可扩展的,但是不可修改。 单一职责原则(SRP).原创 2020-07-02 17:10:17 · 106 阅读 · 0 评论