《Spring上课笔记》---class1

记录自己的上课笔记,如有错误,还请指正。还是拖到了学院教啊。
环境:eclipse+spring4.3

一:面向对象回顾

面向对象程序设计:
1.基本思想:将系统分解为一组可重用的对象
2.对象之间维护相互之间的依赖关系
3.应用程序通过类和接口组织
4.OOP的编程元素实现核心的业务需要

需求分析:
电脑需要使用CPU去玩游戏。

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

在这里插入图片描述
每个实体都是一个对象,电脑获得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实现一个接口,电脑通过实现接口来达到玩游戏的目的。
    在这里插入图片描述
    接口:
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装上了");
	}

}

实现三:采用容器类,所有对象都由容器管理
在这里插入图片描述
容器类:

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();
	}
}

实现四:使用电脑选择类,封装查找逻辑,对外公开查找组件。
在这里插入图片描述

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();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_44867340/article/details/114268940