Fork me on GitHub
To the moon

A Coder,a Programmer,a Developer


  • Home

  • Tags

  • Categories

  • Archives

  • Search

tiny-spring-Aop 分析笔记(1)

Posted on 2018-11-16 | Edited on 2023-05-09 | In spring

tinySpring Aop 分析笔记(1)

项目学习地址:code4craft/tiny-spring

step-7-method-interceptor-by-jdk-dynamic-proxy

step 7 针对有接口的情况,采用 jdk 动态代理的方式实现 AOP。

另一种情况是:无接口时,创建子类,然后进行增强(调用父类的方法),实现动态代理的实现。即 cglib 动态代理。

Read more »

Aoot examination

Posted on 2018-11-13 | Edited on 2023-05-09 | In examination

aoot examination

1. 接口和抽象类的区别

  • 接口是对动作的抽象(这个对象能做什么),抽象类是对根源的抽象(这个对象是什么)。
  • 两者都不能直接实例化,对接口实例化时,接口变量必须指向一个类对象(此类对象必须实现了所有的接口方法);对抽象类实例化时,抽象类变量必须指向一个子类对象(此子类对象必须实现了所有的抽象方法)。注:如果方法不能全部被类 A 实现,那么类 A 必然是抽象类。
  • 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
  • 抽象方法要被实现,所以不能是静态的,也不能是私有的。
Read more »

UML(7)

Posted on 2018-11-13 | Edited on 2023-05-09 | In UML

面向对象系统分析与设计(7)

1. 面向对象的六大设计原则

  1. 单一职责,single responsibility principle,SRP
    • 一个类,只做一件事。
  2. 开闭原则,open close principle,OCP
    • 对扩展开放,对修改封闭,保护既有系统。
    • 是 OO 设计的真正核心。
  3. 里氏替换原则,liskov substitution principle,LSP
    • 子类可以拓展父类的功能,但不能修改父类原有的功能。
  4. 接口隔离原则,interface segregation principle,ISP
    • 接口间的依赖性要小;比如一个类要实现某功能时,如果接入接口 A 和接口 B,然而只有 A 的功能是必须的,但因为 A 和 B 的依赖性,接入 B 是完全没有必要的,修改的办法就是降低 A、B 间的依赖。
  5. 迪米特原则,law of demeter,LOD
    • 陌生的类不要作为局部变量的形式出现在类的内部,耦合性会变高。
  6. DIP原则,dependency inversion principle。
    • 模块设计、细节和策略应该依赖于抽象,抽象的稳定性决定了系统的稳定性。
    • 变量不应该持有指向具体类的指针或引用。
    • 类不应该从具体类派生。
    • 任何方法都不应该覆写它的任何基类中已经实现了的方法。
Read more »

UML(6)

Posted on 2018-11-12 | Edited on 2023-05-09 | In UML

面向对象系统分析与设计(6)

1. 系统设计

  • 定义:将分析模型的逻辑结构加以实现前的准备过程。

哪些工作内容:

  1. 考虑非功能性需求的弊端;
  2. 考虑全局设计问题;
  3. 考虑实现的环境 —— implement environment;
  4. 补充 classes 的所有属性和操作;
  5. 将 implementation 的工作分成可执行的小块;
  6. 为 subsystems 间建立接口。

当可以从“分析模式”平滑过渡到“设计模式”时(即无需大改时),就是开始系统设计的最佳时刻。

Read more »

UML(5)

Posted on 2018-11-11 | Edited on 2023-05-09 | In UML

面向对象系统分析与设计(5)

  • 为什么要对系统进行分析:
    1. 因为需求的特殊性;
    2. 用开发语言描述出来,更加正规且准确;
    3. 理解上的需要;
    4. 设计的需要。
  • 系统分析的过程:
    1. 分析结构;
    2. 分析用例;
    3. 分析 classes;
    4. 分析 packages;
Read more »

UML(4)

Posted on 2018-11-10 | Edited on 2023-05-09 | In UML

面向对象系统分析与设计(4)

引子

  • 为了让具有不同背景的角色(比如 user、customer 等)能够准确地获取需求,引入了类图、用例图、时序图、状态机图等等手段

UP建模

UP建模的四大阶段:

  1. 初始阶段:主要从此阶段拿到需求。搞定最关键部分的元素。占比10%。
  2. 详述阶段:填充细节,占比约80%。
  3. construction 阶段:补充剩下的。(不理会)
  4. transition 阶段:需求变更时进入此阶段。(不理会)
Read more »

UML(3)

Posted on 2018-11-10 | Edited on 2023-05-09 | In UML

面向对象系统分析与设计(3)

晦涩的概念

  • 做系统分析的目的:理解既有系统的功能、更好地满足未来的需求。
  • 做分析的几个阶段:收集相关信息;确定需求;为需求制定优先级;需求间的取舍;审核。
  • 做分析的技巧:从调查中发现本质;分析员应当了解业务细节和日常操作的流程;分析员要表现得像业务员一样尽可能地了解业务;分析员对问题要有独特的视角;从需求出发为业务过程建模。
  • 新系统需要具备什么特性?
    • 功能性需求(需要展示出必备的功能、需要建立在业务的基础上、需要有分析建模的记录文档);
    • 非功能性需求(技术性的环境、可用性、可靠性、安全性需求)。
Read more »

Spring IOC

Posted on 2018-11-06 | Edited on 2023-05-09 | In spring

Spring 源码学习之 IOC

一、源码说明

说明:本文分析的是 SpringFrameWork(5.0.5.RELEASE)IOC 部分的源码。

IOC:inversion of control,控制反转。应用程序将对象的控制权移交给第三方容器,并通过容器来管理这些被依赖的对象,完成了应用程序与被依赖对象的解耦。

Read more »

tiny-spring分析笔记(2)

Posted on 2018-11-02 | Edited on 2023-05-09 | In spring

tinySpring 分析笔记——IOC(2)

学习项目 Github 地址:code4craft/tiny-spring

上一篇博客:tiny-spring分析笔记(1)

step-4-config-beanfactory-with-xml

  • 在 step 3 中,“text”参数是直接写入 java 类中。
  • step 4 的目标就是将参数的配置信息写入 xml 文件中,然后代码通过读取 xml 文件获得参数。
  • 参数放入BeanDefinition中,然后用BeanFactory将它们一一注册(包括 setBean),最终实现 getBean。
Read more »

tiny-spring分析笔记(1)

Posted on 2018-11-02 | Edited on 2023-05-09 | In spring

tinySpring 分析笔记——IOC(1)

学习项目 Github 地址:code4craft/tiny-spring

step-1-container-register-and-get

使用 map 当作 bean 的容器,避免间接 new ,代替直接 new。

1.1 HelloWorldService.java

1
2
3
4
5
6
public class HelloWorldService {

public void helloWorld(){
System.out.println("Hello World!");
}
}
Read more »
1…91011…15

Harrison Lee / Email (harrisonli60@163.com)

It is never too late to learn a new skill, even a challenging one.

150 posts
21 categories
32 tags
© 2025 Harrison Lee / Email (harrisonli60@163.com)
Powered by Hexo v6.3.0
|
Theme – NexT.Mist v7.0.0
|