閱讀589 返回首頁    go 技術社區[雲棲]


[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

  上一篇:go 10年,我的 程序人生
  下一篇:go CodeIgniter框架配置