举个例子,好比你写
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没有参杂在一块儿,没有谁调用了谁等等,实际上就是没有耦合,他们的关系由接口代替表示了。
手机码字,若有疏忽,请见谅