//课程
public interface ICourse {
void learn();//学习。。。
}
//Java课程
public class JavaCourse implements ICourse{
@Override
public void learn() {
System.out.println("学习java。。。");
}
}
//Html课程
public class HtmlCourse implements ICourse{
@Override
public void learn() {
// TODO Auto-generated method stub
System.out.println("学习Html");
}
}
public class Student {
//学习java课程
public void learnJava() {
ICourse course = new JavaCourse();
course.learn();
}
//学习HtmlCourse课程
public void learnHtml() {
ICourse course = new HtmlCourse();
course.learn();
}
public static void learnCourse() {
Student student = new Student();
student.learnHtml();
student.learnJava();
}
public static void main(String[] args) {
learnCourse();
}
}
通过简单工厂,可以将创建课程new集中起来操作,方便后期维护
//课程工厂
public class CourseFactory {
//根据名字获取课程
public static ICourse getCourse(String name) {
if(name.equals("java")) {
return new JavaCourse();
}
else {
return new HtmlCourse();
}
}
}
public class Student
{
//学习java课程
public void learnJava() {
ICourse course = new JavaCourse();
course.learn();
}
//学习HtmlCourse课程
public void learnHtml() {
ICourse course = new HtmlCourse();
course.learn();
}
public void learn(String name) {
ICourse course = CourseFactory.getCourse(name);
//course就是根据name拿到的相应的课程
course.learn();
}
public static void learnCourse() {
Student student = new Student();
student.learnHtml();
student.learnJava();
}
public static void learnCourseWithFactory() {
Student student = new Student();
student.learn("java");
}
public static void main(String[] args) {
//learnCourse();
learnCourseWithFactory();
}
}
Spring
IOC(控制反转)也可以称之为DI(依赖注入):
控制反转:将创建对象,属性值的方式进行了翻转,从new,setXXX()翻转为了从springIOC容器getBean()
依赖注入:将属性值注入给了属性,将属性注入给了bean,将bean注入给了ioc容器;
总结:ioc/id,无论要什么对象,都可以直接去springioc容器中获取,而不需要自己操作(new\setXXX())
因此以后的ioc分为两步。1.先给springioc中存放对象并赋值 2.拿