目錄
- 一:面向物件回顧
記錄自己的上課筆記,如有錯誤,還請指正,還是拖到了學院教啊,
環境: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();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/265423.html
標籤:其他
上一篇:AsyncTask原始碼分析
下一篇:C++入門
