简单工厂设计模式
- 字符串耦合,给工厂字符串,工厂帮我们创建对象;
- 工厂返回的是接口。
/**
* 生产娃娃的对象
* 负责描述所有实例所共有的公共接口
* @author Administrator
*
*/
public interface Doll {
public void getInfo();
}
public class BarbieDoll implements Doll{
public void getInfo(){
System.out.println("我是芭比娃娃。");
}
}
public class ClothDoll implements Doll{
public void getInfo(){
System.out.println("我是布娃娃。");
}
}
/**
* 加入一个生产娃娃的工厂类
* @author Administrator
*
*/
public class DollFactory {
// 获取一个娃娃,思考使用接口的原因
// 引入接口的主要原因是,返回对象的类型是不确定的,需要用一个统一的接口来表达对象的类型
public static Doll getInstace(String name){
// 根据条件生产不同的对象
if("cloth".equals(name)){
return new ClothDoll();
}else if("barbie".equals(name)){
return new BarbieDoll();
}
return null;
}
}
测试方法:
public class FactoryTest {
/**
* 调用者,下面的两个 Doll 接口的实现类是“被调用者”,
* 被调用者对象可能发生变化,使用工厂模式使得对象创建的扩展性变差
* 思想:不让客户端直接依赖被调用者类。
* 中间人:DollFactory
* 直接 new 叫耦合(太依赖了!),工厂模式就很好滴做到了解耦
* @param args
*/
public static void main(String[] args) {
Doll clothDoll = DollFactory.getInstace("cloth");
if (clothDoll != null) {
clothDoll.getInfo();
}
Doll barbieDoll = DollFactory.getInstace("barbie");
if (barbieDoll != null) {
barbieDoll.getInfo();
}
}
}