什么是工厂模式:在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
在项目中很多时候合作开发,每个人代码分工,那么分工合并的过程很容易出问题。比如
A改类名造成B也得改代码,这时候就出现工厂模式
先建一个接口和具体的类
packagecom.BWM;public interfaceBWM{voidinfo();
}//
//class BWM3 implements BWM{//@Override//public void info() {//System.out.println("BWM3");//}//}//改动
class BWM3i implementsBWM{
@Overridepublic voidinfo() {
System.out.println("BWM3i");
}
}class BWM5 implementsBWM{
@Overridepublic voidinfo() {
System.out.println("BWM5");
}
}class BWM7 implementsBWM{
@Overridepublic voidinfo() {
System.out.println("BWM7");
}
}
然后构建工厂,汽车生产工厂接口,重点
package com.BWM;
public interface BwmFactory {
BWM productBWM();
}
class BWM3Factory implements BwmFactory{
@Override
public BWM productBWM() {
// System.out.println("生产3系宝马");
System.out.println("生产3i系宝马");
return new BWM3i();
}
}
class BWM5Factory implements BwmFactory{
@Override
public BWM productBWM() {
System.out.println("生产5系宝马");
return new BWM5();
}
}
class BWM7Factory implements BwmFactory{
@Override
public BWM productBWM() {
System.out.println("生产7系宝马");
return new BWM7();
}
}
然后测试
packagecom.BWM;public classtest {public static voidmain(String[] args) {
BWM b3= newBWM3Factory().productBWM();
b3.info();
BWM b5= newBWM5Factory().productBWM();
b5.info();
BWM b7= newBWM7Factory().productBWM();
b7.info();
}
}
然后发现改动之后也不用变B开发人员的代码