工厂模式-基本概念:
核心本质:
- (1)实例化对象不适用new,用工厂方法代替
- (2)将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
三种模式:
- (1)简单工厂模式
用来生产同一等级结构中的任意产品(对于增加新的产品,需要扩展已有的代码)
- (2)工厂方法模式
用来生产同一等级结构中的固定产品(支持增加新产品)
- (3)抽象工厂模式
围绕一个超级工厂创建其它工厂。该超级工厂又称为其它工厂的工厂。
代码实现:
代码示例:
配图说明
1.简单工厂模式:
创建Car接口:
package factory;
//创建car接口
public interface Car
{
void Carname();
}
实现Car接口Baoma.java:
package factory;
//实现接口
public class Baoma implements Ca
r{
@Override
public void Carname()
{
System.out.println("car is baoma !");
}
}
实现Car接口woerwo.java:
package factory;
//实现接口
public class woerwo implements Car
{
@Override
public void Carname()
{
System.out.println("car is woerwo !");
}
}
创建一个工厂FactoryCar.java:
package factory;
//静态工厂模式
//增加一个新的产品,如果不修改代码,无法实现
//开闭原则
public class FactoryCar
{
Car getCarname(String carname)
{
if(carname.equals("baoma"))
{
return new Baoma();
}
else if(carname.equals("woerwo"))
{
return new woerwo();
}
else
{
return null;
}
}
}
创建一个买车的消费者Consumer.java:
package factory;
public class Consumer
{
public static void main(String[] args)
{
//采用new方式-最基本的方法
// Car car=new Baoma();
// car.Carname();
//采用简单工厂模式
//测试1
Car car1=new FactoryCar().getCarname("baoma");
car1.Carname();
//测试2
Car car2=new FactoryCar().getCarname("woerwo");
car2.Carname();
}
}
2.工厂方法模式:
图示说明:
创建一个Car接口:
package factory2;
//创建一个car接口
public interface Car
{
void Carname();
}
实现Car接口方法,baoma,java:
package factory2;
import factory.Car;
//实现Car接口方法
public class Baoma implements Car
{
@Override
public void Carname()
{
System.out.println("car is baoma !");
}
}
实现Car接口方法,woerwo,java:
package factory2;
import factory.Car;
//实现Car接口方法
public class woerwo implements Car
{
@Override
public void Carname()
{
System.out.println("car is woerwo !");
}
}
创建车工厂接口:FactoryCar
package factory2;
//创建车工厂接口
public interface FactoryCar
{
Car name();
}
实现FactoryCar接口方法,BaomaFactory.java
package factory2;
//实现车工厂FactoryCar接口方法
public class BaomaFactory implements FactoryCar
{
@Override
public Car name() {
return (Car) new Baoma();
}
}
实现FactoryCar接口方法,WoerwoFactory.java
package factory2;
//实现车工厂FactoryCar接口方法
public class WoerwoFactory implements FactoryCar
{
@Override
public Car name()
{
return (Car) new woerwo();
}
}
创建一个买车的消费者Consumer.java:
package factory2;
import factory.Car;
//创建一个消费者进行测试
public class Consumer
{
public static void main(String[] args)
{
//工厂方法模式
Car car1= (Car) new BaomaFactory().name();
Car car2= (Car) new WoerwoFactory().name();
//测试1:
car1.Carname();
//测试2:
car2.Carname();
}
}
学习产出:
提示:这里只详细介绍了前两个工厂方法,后期会更新第三种抽象工厂,还会带有方法的配图说明
- 知识不断的去积累
- 学无止尽