整体代码结构:
Being.java:
package com.kinsey.woo.staticfactory.app.service;
public interface Being {
public void say();
}
Cat.java
package com.kinsey.woo.staticfactory.app.dto;
import com.kinsey.woo.staticfactory.app.service.Being;
public class Cat implements Being {
public String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Cat(String msg){
this.msg = msg;
}
@Override
public void say() {
System.out.println(msg+ ",猫爱吃鱼.");
}
}
Dog.java
package com.kinsey.woo.staticfactory.app.dto;
import com.kinsey.woo.staticfactory.app.service.Being;
public class Dog implements Being {
public String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Dog(String msg) {
super();
this.msg = msg;
}
@Override
public void say() {
System.out.println(msg + ",狗爱吃骨头.");
}
}
静态工厂类
AnimalStaticFactory.java
package com.kinsey.woo.staticfactory;
import com.kinsey.woo.staticfactory.app.dto.Cat;
import com.kinsey.woo.staticfactory.app.dto.Dog;
import com.kinsey.woo.staticfactory.app.service.Being;
public class AnimalStaticFactory {
private final static String CAT = "cat";
private final static String DOG = "dog";
public static Being produce(String msg){
if(AnimalStaticFactory.CAT.equals(msg)){
return new Cat(msg);
}else if(AnimalStaticFactory.DOG.equals(msg)){
return new Dog(msg);
}else{
return new Being() {
@Override
public void say() {
System.out.println("匿名方法");
}
};
}
}
}
RunMain.java
package com.kinsey.woo.staticfactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.kinsey.woo.staticfactory.app.dto.Cat;
import com.kinsey.woo.staticfactory.app.dto.Dog;
public class RunMain {
public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext ctx = new ClassPathXmlApplicationContext("springconf.xml");
Cat cat = (Cat) ctx.getBean("cat");
Dog dog = (Dog) ctx.getBean("dog");
cat.say();
dog.say();
}
}
结果见图一。