工厂模式本质:实例化对象,工厂方法代替new操作;将实现类和创建对象统一管理和控制,将调用者和实现类解耦
工厂模式分为了三种
1, 简单工厂模式: 最常用
对于新增产品 要修改代码
2,工厂方法模式:
新增产品不用修改代码 ,代码复杂度高
3, 抽象工厂模式:
可以增加产品族,进行产品之间的搭配 ,一般用的少, 框架可能会用到
***************************
代码实现:
1, 简单工厂模式:
// 接口类 Car
package simpleFactory;
public interface Car {
void run();
}
// 实现类1 Audi
package simpleFactory;
public class Audi implements Car {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("开着奥迪");
}
}
// 实现类2 Byd
package simpleFactory;
public class Byd implements Car{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("开着比亚迪");
}
}
// 工厂类 CarFactory
package simpleFactory;
public class CarFactory {
public static Car makeCar(String type) {
if(("audi").equals(type)) {
return new Audi();
}else if(("byd").equals(type)) {
return new Byd();
}
return new Audi();
}
}
// 运行代码
package simpleFactory;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car c1=CarFactory.makeCar("audi");
Car c2=CarFactory.makeCar("byd");
c1.run();
c2.run();
}
}
2,工厂方法模式:
// 接口类 Car
package simpleFactory;
public interface Car {
void run();
}
// 实现类1 Audi
package simpleFactory;
public class Audi implements Car {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("开着奥迪");
}
}
// 实现类工厂类1 AudiFactory
package simpleFactory;
public class AudiFactory implements CarFactory {
@Override
public Car makeCar() {
// TODO Auto-generated method stub
return new Audi();
}
}
// 实现类2 Byd
package simpleFactory;
public class Byd implements Car{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("开着比亚迪");
}
}
// 实现类工厂类2 BydFactory
package simpleFactory;
public class BydFactory implements CarFactory {
@Override
public Car makeCar() {
// TODO Auto-generated method stub
return new Byd();
}
}
// 工厂接口类 CarFactory
package simpleFactory;
public interface CarFactory {
Car makeCar();
}
// 运行代码
package simpleFactory;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car c1= new AudiFactory().makeCar();
Car c2= new BydFactory().makeCar();
c1.run();
c2.run();
}
}
3, 抽象工厂模式:
代码太复杂了 就不一一叙述了