[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