工厂模式是一种创建型的设计模式,个人感觉就是帮助我们new出对象的一种手段。。
1.工厂模式:
T利用多态,几种工厂类实现接口后,调用方法。这样用户不再需要关心创建过程即可new对象:
工厂类:
public class SanluFactory implements Factory {
@Override
public Milk getMilk() {
return new Sanlu();
}
}
接口类:
/**
* 工厂模型
* Created by Tom on 2018/3/4.
*/
public interface Factory {
//工厂必然具有生产产品技能,统一的产品出口
Milk getMilk();
}
调用:
public class FactoryTest {
public static void main(String[] args) {
//System.out.println(new Factory().getMilk(););
//货比三家
//不知道谁好谁好谁坏
//配置,可能会配置错
Factory factory = new SanluFactory();
System.out.println(factory.getMilk());
}
}
2.静态工厂模式:
是spring中用到最多的模式!
1.静态工厂类:
/**
*
* 抽象工厂是用户的主入口
* 在Spring中应用得最为广泛的一种设计模式
* 易于扩展
* Created by Tom on 2018/3/4.
*/
public abstract class AbstractFactory {
//公共的逻辑
//方便于统一管理
/**
* 获得一个蒙牛品牌的牛奶
* @return
*/
public abstract Milk getMengniu();
/**
* 获得一个伊利品牌的牛奶
* @return
*/
public abstract Milk getYili();
/**
* 获得一个特仑苏品牌的牛奶
* @return
*/
public abstract Milk getTelunsu();
public abstract Milk getSanlu();
}
这里在静态工厂类出了可以写静态方法,还可以定义一些公共逻辑
2.工厂类
public class MilkFactory extends AbstractFactory {
@Override
public Milk getMengniu() {
return new Mengniu();
}
@Override
public Milk getYili() {
return new Yili();
}
@Override
public Milk getTelunsu() {
return new Telunsu();
}
@Override
public Milk getSanlu() {
return new Sanlu();
}
}
这里new的地方可以使用一下普通工厂类来做进一步解耦
3.调用:
public class AbstractFactoryTest {
public static void main(String[] args) {
MilkFactory factory = new MilkFactory();
//对于用户而言,更加简单了
//用户只有选择的权利了,保证了程序的健壮性
System.out.println(factory.getSanlu());
}
}
以上