IoC (Inverse of Control)
DI(Dependency Injection)
AOP (aspect oriented progamming)
Stacic factory Method 静态工程方法 也叫简单工厂
是由一个工厂对象决定创建出那一种产品类的实例。通常它根据自变量的不同返回不同的类的实例
例如去日用品工厂拿东西 工厂直接返回你要的洗发水
构成:工厂类角色 在客户端的直接调用下创建产品对象,是一个具体类实现。
抽象产品角色 是一个接口或者是抽象类 例如 日用品
具体产品角色 由工厂创建的对象 洗发水
package com.test.simplefactory;
public interface Person {
public String sayHello(String name);
public String sayGoodbye(String name);
}
package com.test.simplefactory;
public class Chinese implements Person {
@Override
public String sayGoodbye(String name) {
return name + "再见!";
}
@Override
public String sayHello(String name) {
return name + "你好!";
}
}
package com.test.simplefactory;
public class American implements Person {
@Override
public String sayGoodbye(String name) {
return "Hello!";
}
@Override
public String sayHello(String name) {
return "ByeBye!";
}
}
package com.test.simplefactory;
public class PersonFactory {
public Person getPerson(String name) {
if("american".equals(name)){
return new American();
} else if ("chinese".equals(name)){
return new Chinese();
}
return null;
}
}
package com.test.simplefactory;
public class Client {
public static void main(String[] args) {
PersonFactory factory = new PersonFactory();
Person chinese = factory.getPerson("chinese");
System.out.println(chinese.sayHello("张三"));
Person american = factory.getPerson("american");
System.out.println(american.sayGoodbye("Tom"));
}
}
一个person接口和chinese 和american两个实现类外加一个工厂类和一个client的运行类。
Spring代替工厂的功能:IoC/DI的特性
ClassPathResource cpr = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(cpr);
Person chinese = (Person)factory.getBean("chinese");
system.out.println(chinese.sayHello("张三"));
需要在applicationContext.xml 文件中配置id 和class
<bean id="chinese" class="com.test.Chinese"></bean>