《Spring上课笔记》---class1

简介: 《Spring上课笔记》---class1

一:面向对象回顾

面向对象程序设计:

1.基本思想:将系统分解为一组可重用的对象

2.对象之间维护相互之间的依赖关系

3.应用程序通过类和接口组织

4.OOP的编程元素实现核心的业务需要

需求分析:

电脑需要使用CPU去玩游戏。

  • 实现一:以面向对象的方式实现Demo

20210301183719188.png

每个实体都是一个对象,电脑获得cpu之后去玩游戏。

AndroidCpu:


package demo1;
public class AndroidCpu {
    public void run() {
      System.out.println("android的cpu装上了");
    }
}

IosCpu:

package demo1;
public class IosCpu {
   public void run() {
     System.out.println("ios的cpu装上了");
   }
}

电脑类:

package demo1;
public class Computer {
    AndroidCpu cpu=new AndroidCpu();
      public void playGame() {
        cpu.run();
        System.out.println("电脑可以开始玩游戏了");
      }
}

启动类:

package demo1;
public class Run {
     public static void main(String[] args) {
    Computer computer=new Computer();
    computer.playGame();
  }
}

实现二:分离接口和实现

优化目标:消除电脑和CPU实现类之间的依赖关系。

不同cpu实现一个接口,电脑通过实现接口来达到玩游戏的目的。


20210301185150910.png

接口:


public interface Cpu {
    public void run();
}

启动类:

public class IosCpu implements Cpu{
  @Override
  public void run() {
    // TODO Auto-generated method stub
    System.out.println("Ios的Cpu装上了");
  }
}

实现三:采用容器类,所有对象都由容器管理

2021030118554536.png

容器类:


public class Container {
  private static Container instance;
  private Map<String,Object> components;
  private Container() {
    components=new HashMap<String,Object>();
    instance =this;
    Cpu cpu=new IosCpu();
    components.put("cpu", cpu);
    Computer computer=new Computer();
    components.put("computer",computer);
  }
  public static Container getInstance() {
    if(instance==null) {
      instance=new Container();
    }
    return instance;
  }
  public Object getComponent(String key) {
    return components.get(key);
  }
}

启动类:

public class Run {
    public static void main(String[] args) {
    Computer computer=(Computer) Container.getInstance().getComponent("computer");
    computer.playGame();
  }
}

实现四:使用电脑选择类,封装查找逻辑,对外公开查找组件。

20210301185833877.png

public class ComputerLocator {
     private static Container container=Container.getInstance();
     public static Cpu getCpu() {
       return (Cpu) container.getComponent("cpu");
     }
}

实现五:分离接口和实现,进行依赖注入。

电脑类:

public class Computer {
    Cpu cpu;
  public void setCpu(Cpu cpu) {
    this.cpu = cpu;
  }
  public void playGame() {
     cpu.run();
     System.out.println("电脑可以开始玩游戏了");
   }
}

启动类:

package demo5;
public class Run {
    public static void main(String[] args) {
    Computer computer=(Computer) Container.getInstance().getComponent("computer");
    Cpu cpu=new AndroidCpu();
    computer.setCpu(cpu);
    computer.playGame();
  }
}
相关文章
|
1月前
|
Java Spring
【编程笔记】在 Spring 项目中使用 RestTemplate 发送网络请求
【编程笔记】在 Spring 项目中使用 RestTemplate 发送网络请求
105 0
|
17小时前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
|
20小时前
|
Java Linux 程序员
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
|
23小时前
|
XML Java 数据安全/隐私保护
技术笔记:Spring中的通知(Advice)和顾问(Advisor)
技术笔记:Spring中的通知(Advice)和顾问(Advisor)
|
1月前
|
前端开发 Java 数据格式
【Spring系列笔记】定义Bean的方式
在Spring Boot应用程序中,定义Bean是非常常见的操作,它是构建应用程序的基础。Spring Boot提供了多种方式来定义Bean,每种方式都有其适用的场景和优势。
58 2
|
1月前
|
Java Spring 容器
【Spring系列笔记】IOC与DI
IoC 和 DI 是面向对象编程中的两个相关概念,它们主要用于解决程序中的依赖管理和解耦问题。 控制反转是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入和依赖查找。
43 2
|
1月前
|
缓存 监控 Java
【Spring系列笔记】AOP
面向切面编程就是面向特定方法编程。通过将横切关注点(cross-cutting concerns)从主要业务逻辑中分离出来,提供一种更好的代码模块化和可维护性。 横切关注点指的是在应用程序中横跨多个模块或层的功能,例如日志记录、事务管理、安全性、缓存、异常处理等。
37 0
|
1月前
|
存储 缓存 Java
【Spring系列笔记】依赖注入,循环依赖以及三级缓存
依赖注入: 是指通过外部配置,将依赖关系注入到对象中。依赖注入有四种主要方式:构造器注入、setter方法注入、接口注入以及注解注入。其中注解注入在开发中最为常见,因为其使用便捷以及可维护性强;构造器注入为官方推荐,可注入不可变对象以及解决循环依赖问题。本文基于依赖注入方式引出循环依赖以及三层缓存的底层原理,以及代码的实现方式。
38 0
|
1月前
|
SQL Java 数据库连接
(数据库链接池)spring内容复习7月16日笔记
(数据库链接池)spring内容复习7月16日笔记
19 0
|
1月前
|
安全 Java 数据库连接
啃完这些Spring知识点,我竟吊打了阿里面试官(附面经+笔记)
对于开发同学来说,Spring 框架熟悉又陌生。 熟悉:开发过程中无时无刻不在使用 Spring 的知识点;陌生:对于基本理论知识疏于整理与记忆。导致很多同学面试时对于 Spring 相关的题目知其答案,但表达不够完整准确。