589
技術社區[雲棲]
[Spring]有一個人的類,他有使用武器的方法;有英雄類,繼承人的類;武器有手槍和武士刀。
這道題是我自己出的給自己做的,練習spring,使用setter注入,麵向接口編程,我的程序如下:
在com.zzk.app.service包下
package com.zzk.app.service; public interface Person { //定義一個使用武器的方法 public void useWeapon(); }
package com.zzk.app.service; public interface Weapon { //Weapon接口裏有一個攻擊的方法 public String attack(); }
在com.zzk.app.service.impl包內
package com.zzk.app.service.impl; import com.zzk.app.service.Person; import com.zzk.app.service.Weapon; public class Hero implements Person{ private Weapon weapon; //設值注入所需的setter方法 public void setWeapon(Weapon weapon) { this.weapon = weapon; } //實現Person接口的useWeapon方法 public void useWeapon() { //調用weapon的attack()方法, //表明Person對象依賴於axe對象 System.out.println(weapon.attack()); } }
package com.zzk.app.service.impl; import com.zzk.app.service.Weapon; public class GunWeapon implements Weapon{ public String attack() { return "AK47,秒殺你"; } }
package com.zzk.app.service.impl; import com.zzk.app.service.Weapon; public class GunWeapon implements Weapon{ public String attack() { return "AK47,秒殺你"; } }
bean.xml
<?xml version="1.0" encoding="GBK"?> <!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd語義約束 --> <beans xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.springframework.org/schema/beans" xsi:schemaLocation="https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 配置KnifeWeapon實例,其實現類是KnifeWeapon --> <bean > <!-- 將GunWeapon注入給weapon屬性 --> <property name="weapon" ref="KnifeWeapon"/> </bean> <!-- 配置GunWeapon實例,其實現類是GunWeapon --> <bean /> <!-- 配置KnifeWeapon實例,其實現類是KnifeWeapon --> <bean /> </beans>
在com.zzk.app.test包下
package com.zzk.app.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.zzk.app.service.Person; public class BeanTest { public static void main(String[] args) { //創建Spring容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); //獲取Hero實例 Person p = (Person)ctx.getBean("Hero", Person.class); p.useWeapon(); } }
over
最後更新:2017-04-04 07:03:36