简单工厂模式:
概念:
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
代码:
interface Human{
void sleep();
}
class Man implements Human{
@Override
public void sleep() {
System.out.println("Man 睡觉!");
}
}
class Woman implements Human{
@Override
public void sleep() {
System.out.println("Woman 睡觉!");
}
}
class Simple_factory{
public static Human make(String sex){
if("man".equals(sex)){
return new Man();
}
else if("woman".equals(sex)){
return new Woman();
}else{
System.out.println("No");
return null;
}
}
}
class Simple_factory_1{
public static Human make(Class c){
Human human = null;
try {
// 通过反射实现实例化这个类,省去了去判断
human = (Human)Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return human;
}
}
public class Factory {
public static void main(String[] args) {
// 普通实现
Human human = new Simple_factory().make("man");
human.sleep();
Human human1 = new Simple_factory().make("woman");
human1.sleep();
System.out.println("------------------------------");
// 反射实现
Human human2 = new Simple_factory_1().make(Man.class);
human2.sleep();
Human human3 = new Simple_factory_1().make(Woman.class);
human3.sleep();
}
}
直接看代码最好,设计模式这种思想的多看代码去体会!
其中关于反射我会面专门写一个博客来专门做解释的!