舉個例子,好比你寫
Apple apple = new Apple();
People people = new People();
people.eat(apple);spring
而後有一天,客戶說不想吃Apple了
給我改爲吃Orange,而後你打開源文件app
Orange orange = new Orange();
People people = new People();
people.eat(orange);
再從新編譯ui
再一天,客戶又以爲很差,要Peach了設計
Peach peach = new Peach();
People people = new People();
people.eat(peach);
再從新編譯xml
………接口
而後你在客戶的需求下崩潰了get
假若您用springit
Fruit fruit = (Fruit)beanFactory.getBean("fruit");編譯
People people = (People)beanFactory.getBean("people");配置
people.eat(fruit);
這樣使用了接口Fruit,你只須要在xml文件配置,更換fruit的bean,無需改變源代碼。對於people也如此。
會發現,咱們在這種設計下會少維護了不少代碼,達到這樣的效果的緣由是由於,Fruit和People沒有參雜在一塊兒,沒有誰調用了誰等等,實際上就是沒有耦合,他們的關係由接口代替表示了。
手機碼字,若有疏忽,請見諒