[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="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	<!-- 配置KnifeWeapon实例,其实现类是KnifeWeapon -->
	<bean id="Hero" class="com.zzk.app.service.impl.Hero">
		<!-- 将GunWeapon注入给weapon属性 -->
		<property name="weapon" ref="KnifeWeapon"/>
	</bean>
	<!-- 配置GunWeapon实例,其实现类是GunWeapon -->
	<bean id="GunWeapon" class="com.zzk.app.service.impl.GunWeapon"/>
	<!-- 配置KnifeWeapon实例,其实现类是KnifeWeapon -->
	<bean id="KnifeWeapon" class="com.zzk.app.service.impl.KnifeWeapon"/>
</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


				
时间: 2025-01-21 15:09:58

[Spring]有一个人的类,他有使用武器的方法;有英雄类,继承人的类;武器有手枪和武士刀。的相关文章

工具类中调用dao层的方法,spring配置如何写

问题描述 工具类中调用dao层的方法,spring配置如何写 private Set readSensitiveWord() { Set set = new HashSet(); List list = sensitiveDao.findSensitive(); if(list.size()>0){ for(Sensitive s : list){ set.add(s); } } return set; } 在这个方法中我要调用dao层的方法findSensitive().sensitiveDa

spring struts-spring配置的类第一次bussearch使用没事第二次dodelete就找不到类

问题描述 spring配置的类第一次bussearch使用没事第二次dodelete就找不到类 这是spring配置 这是struts的配置 /admin/bus.jsp /admin/bus.jsp 这是错误 java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [Busaction] .....后面的就不贴出来了,求大神指教

hibernate-Hibernate可以自动生成实体类的增删改查的方法吗?

问题描述 Hibernate可以自动生成实体类的增删改查的方法吗? Hibernate可以自动生成实体类的增删改查的方法吗? Hibernate可以自动生成实体类的增删改查的方法吗? 解决方案 可以,MyEclipse的反向工程有这个功能 解决方案二: Hibernate自动生成实体类 解决方案三: 可以的. 在Myeclipse中,正逆向工程操作比较简单,而如果是eclipse的话,会比较麻烦,因为必须要先配置下Hibernate环境(同理如果要生成其他持久化层框架的实体类,也需要先配置).

[Java] 方法锁、对象锁和类锁的意义和区别

版权声明:请尊重个人劳动成果,转载注明出处,谢谢! 目录(?)[+] 首先的明白Java中锁的机制 synchronized  在修饰代码块的时候需要一个reference对象作为锁的对象.  在修饰方法的时候默认是当前对象作为锁的对象.  在修饰类时候默认是当前类的Class对象作为锁的对象.   线程同步的方法:sychronized.lock.reentrantLock分析 方法锁(synchronized修饰方法时) 通过在方法声明中加入 synchronized关键字来声明 synch

Emit学习-基础篇-为动态类添加属性、构造函数、方法

我们通过一个计算A+B的动态类来演示如何为一个动态类添加属性.构造函数 .方法,以及在方法中使用类中定义的属性,按照惯例,我们先给出要实现的动 态类的C#代码,然后再针对C#代码给出相应的实现,代码如下: Add public class Add { private int _a = 0; public int A { get { return _a; } set { _a = value; } } private int _b = 0; public int B { get { return

JavaScript 模拟类机制及私有变量的方法及思路

这篇文章介绍了JavaScript模拟类机制及私有变量的方法及思路,有需要的朋友可以参考一下   在使用一些 Javascript 框架时,或许会看到类似的代码 复制代码 代码如下: var MyClass = new Class({ initialize: function(param, ...) { this.param = param; ... }, func1: function(...) { ... } }); var myObj = new MyClass(param); myObj

java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么

问题描述 java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么 java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么 实现现多个接口的类是不是必须重写其所有方法, 解决方案 首先,第一个问题,了解哪些关键词能修饰方法.变量.类比较容易些. 修饰方法的关键字:public/private/protected/default ,static, 修饰变量了:final ,static:修饰类的:public/private/protected/default,static 其次,实

java-如何理解一个方法的参数为内嵌类

问题描述 如何理解一个方法的参数为内嵌类 如何理解一个方法的参数为内嵌类,能否举个例子,谢谢 解决方案 ListView控件里面有一个ListItem代表条目的内嵌类.ListView有一个add方法允许你添加条目到ListView中. 解决方案二: 比如 class ListView { class ListItem { } public void add(ListView.ListItem item) { ... } } 解决方案三: Bitmap类getPixels()方法中参数strid

java中得到classpath和当前类的绝对路径的一些方法(路径中的%20&quot;进行替换空格)

原网址:http://blog.csdn.net/shendl/article/details/1427475 (注意:利用下面方式得到路径,如果路径中有空格字符, 那么会有"%20"进行替换, 所以得到之后再将"%20"替换成空格) 下面是一些得到classpath和当前类的绝对路径的一些方法.你可能需要使用其中的一些方法来得到你需要的资源的绝对路径. 1,FileTest.class.getResource(""):      FileTes