240 发简信
IP属地:四川
  • 里氏替换原则

    里氏替换原则 继承作为面向对象设计的重要手段,具有以下的特点 优点 代码共享,减少重复工作 提高代码复用性 子类形似于父类而区别于父类 提高代码扩展性 缺点 代码侵入性,继承...

  • 适配器模式

    什么是适配器模式 将一个接口变换成客户期待的另一个的接口,从而使原本因接口不匹配无法一起工作的两个类能够一起工作。生活中不乏这样的案例,如电脑的电源适配器,它的作用主要是解决...

  • 迭代器模式

    迭代器模式 我们在日常的开发中,特别是在使用集合的过程中都或多或少使用了迭代器来对集合进行遍历。这时候我们就会思考一个问题,明明简单的For循环就能解决的集合遍历问题,我们非...

  • 迪米特法则

    软件开发一直在推崇一个概念-低耦合、高内聚。 那什么样的代码设计才算得上低耦合、高内聚的代码。本文通过迪米特法则来讲解一下如何进行低耦合的代码设计。 迪米特法则也叫最小知识原...

  • 责任链模式

    一个故事 小张需要申请一台显示器,需要在公司内部系统提交审核清单。审核清单的审批流程要经过直属领导、部门领导、资源部领导几个环节审批,其中任何一个环节审核不通过,显示器就申请...

  • 装饰器模式

    一个故事 小明今年买了一个毛坯房,计划六月份装修作为婚房使用。小明选择了自定义的装修方案。线槽、刷漆、家具定制、门窗定制都是由不同的厂家来定制安装。 通过装饰器模式来模拟装修...

  • 策略模式

    实际案例 一个主题切换案例 主题模式更换的案例中,不同的主题风格就是一个个策略,我们可以根须需要选择不同的策略。 如何理解策略模式 定义椅子算法,将每个算法都以类的方式凤凰钻...

  • 关于重写equals方法时必须重写hashcode方法的一系列问题。

    Why 日常开发中经常会遇到重写equals和hashocode的场景,以前对这些概念很模糊,只知其然,不知其所以然,现在对这些知识理论进行总结、归纳,加强理解。 What ...

  • 关于调用List的remove方法抛出unsupportedOperationException

    Background 最近在使用List的remove方法抛出了UnsupportedOperationException异常,在网上查询了相关资料之后,把这部分内容总结下来...

  • 模板模式

    模板方法模式 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 如何理解模板模式 在我们的认识中,模板就...

  • 建造者模式

    建造者模式 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 如何理解建造者模式 建造者模式就是将建造复杂对象的过程和组成对象的部件进行解耦。 案例 ...

  • 工厂模式

    写在前面 在面向对象编程(OOP)中,通过new去实例化一个对象是再正常不过的事情。但是每当new一个对象,后面都会跟一个具体类,这使得代码与具体类过度耦合,让我们陷入面向实...

  • 原型模式

    关于克隆,我们会想到《西游记》里面孙悟空的猴毛分身,也会想到《火影忍者》里面的影分身之术。他们都是用一个物体复制若干个一模一样的物体。在面向对象的系统中,我们也可以通过克隆来...

  • 单例模式

    单例模式是一种简单的的设计模式。虽然简单,但是应用却是十分的广泛。所有有必要针对单例模式的知识点进行梳理。 单例模式 确保类只有一个实例,并自动实例化向整个系统提供全局的访问...

  • 单一职责原则

    单一职责原则 应该有且只有一个原因引起累的变更。 一个例子去理解单一职责原则 定义了一个Iphone的接口,包含了电话的三个功能,接通、聊天、挂断。 试想一下这个接口符合单一...

  • 代理模式

    为其他对象提供一个代理以控制对这个对象的访问,在不改变目标对象基础上添加额外的功能。 如何理解代理模式 两个主体:代理对象和被代理对象 对于被代理对象,事情必须要去做吗,但是...

  • 中介者模式

    中介者模式 如何理解中介者模式 复杂的进销存系统类图 类图 虽然不同类型的参与者完成各自的活动,但是每个类相互关联耦合 每个类与多个朋友类相互交互,朋友类越多,耦合性越大,要...

  • 《Effective Java》第6条:消除过期的对象引用

    原文地址: https://itweknow.cn/detail?id=68 ,欢迎大家访问。 说到Java,大概很多人都知道GC。Java有自动的垃圾回收机制,当然了,在这...

  • 120
    11|排序(上)

    如何分析一个排序算法 执行效率 1. 最好情况、最坏情况、平均情况时间复杂度 2. 时间复杂度的系数、常数、低阶 3. 比较次数和交换(移动)次数 内存消耗 通过空间复杂度来...

  • 10|递归

    如何理解递归 递归是一个广泛的编程技巧,如DFS深度优先搜索、前中后序二叉树遍历。 递归满足的三个条件 1.一个问题的解可以分解为几个子问题的解 2.这个问题与分解之后的子问...