1.工厂模式概念
工厂模式是常见的创建模式之一。定义:工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式; 核心: (1)实例化对象,用工厂方法代替new操作。 (2)将选择实现类,创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。 特点:实现了创建者和调用者的分离。 分类: (1)简单工厂模式(Simple Factory Pattern):用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已有的代码) (2)工厂方法模式(Factory Method) :用于生产同一等级结构中的固定产品。(支持增加任意产品) (3)抽像工厂模式(Abstract Factory) :用来生产不同产品族的全部产品。(对于新增加的产品,无能为力,支持增加产品族 ) PS:(感觉是不是有点糊涂,一脸懵逼,没关系以后总计到再回来看吧!)
2.简单工厂模式(Simple Factory Pattern)
又叫静态工厂方法模式(Static FactoryMethod Pattern),它由三种角色组成(关系见下面的类图):
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
简单工厂模式比较简单,这里就写一个实例吧!对比非工厂模式与简单工厂模式。奥迪(audi)和比亚迪(byd)车的跑法。哈哈,不要太认真,这里只是用来举例而已。3.UML图
非工厂模式:简单工厂模式:
4.非工厂模式与简单工厂模式具体比较
(1)抽象产品
//抽象产品角色
public interface Car {
public void run(); //更多具体逻辑.......
}
(2)具体产品
奥迪产品:
//具体产品奥迪
public class AuDi implements Car{
@Override
public void run() {
System.out.println("奥迪跑起来了");
} //更多具体逻辑......
}
比亚迪产品:
//具体产品比亚迪 public class BYD implements Car{
@Override
public void run() {
System.out.println("比亚迪跑起来了"); }
}
非工厂模式测试:
public class Client { //测试客户端
//创建者和调用者没有分离
public static void main(String[] args) {
Car auDi=new AuDi();//在这里创建奥迪
Car byD=new BYD();//在这里创建比亚迪 auDi.run();
byD.run(); //更多具体逻辑.....
}
}
简单工厂模式测试:在上面抽象产品角色和具体产品角色的前提下增加,工厂类角色。
(3)工厂类
public class CarFactory{//创建者测试:
//在这创造奥迪
public static Car CreateAoDi(){
return new AuDi();//返回具体的产品角色给ClientSimpleFactory
}
//在这比创造亚迪
public static Car CreateBYD(){
return new BYD();//返回具体的产品角色给ClientSimpleFactory
}
}
public class ClientSimpleFactory {//测试客户端
//调用者
public static void main(String[] args) {
Car aoDi= CarFactory.CreateAoDi();
Car byD=CarFactory.CreateBYD();
//车跑
aoDi.run();
byD.run();
//更多具体逻辑......
}
}