《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();
  }
}
相关文章
|
29天前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
25 1
|
29天前
|
XML Java 数据库连接
【2020Spring编程实战笔记】Spring开发分享~(上)
【2020Spring编程实战笔记】Spring开发分享~
47 0
|
2月前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
2月前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
5月前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
52 1
|
5月前
|
Java Linux 程序员
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
|
5月前
|
XML Java 数据安全/隐私保护
技术笔记:Spring中的通知(Advice)和顾问(Advisor)
技术笔记:Spring中的通知(Advice)和顾问(Advisor)
64 0
|
6月前
|
前端开发 Java 数据格式
【Spring系列笔记】定义Bean的方式
在Spring Boot应用程序中,定义Bean是非常常见的操作,它是构建应用程序的基础。Spring Boot提供了多种方式来定义Bean,每种方式都有其适用的场景和优势。
105 2
|
6月前
|
缓存 监控 Java
【Spring系列笔记】AOP
面向切面编程就是面向特定方法编程。通过将横切关注点(cross-cutting concerns)从主要业务逻辑中分离出来,提供一种更好的代码模块化和可维护性。 横切关注点指的是在应用程序中横跨多个模块或层的功能,例如日志记录、事务管理、安全性、缓存、异常处理等。
91 0
|
6月前
|
存储 缓存 Java
【Spring系列笔记】依赖注入,循环依赖以及三级缓存
依赖注入: 是指通过外部配置,将依赖关系注入到对象中。依赖注入有四种主要方式:构造器注入、setter方法注入、接口注入以及注解注入。其中注解注入在开发中最为常见,因为其使用便捷以及可维护性强;构造器注入为官方推荐,可注入不可变对象以及解决循环依赖问题。本文基于依赖注入方式引出循环依赖以及三层缓存的底层原理,以及代码的实现方式。
88 0