工厂模式

工厂模式

工厂模式是属于类创建型模式,它根据抽象不同的程度分三种:

  • 简单工厂模式(静态工厂模式)
  • 工厂方法模式
  • 抽象工厂模式

简单工厂模式

也称为静态工厂模式,它属于类创造型模式,在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Factory {
//静态工厂方法
public static Product getProduct(String arg) {
Product product = null;
if (arg.equalsIgnoreCase("A")) {
product = new ConcreteProductA();
//初始化设置product
}
else if (arg.equalsIgnoreCase("B")) {
product = new ConcreteProductB();
}
return product;
}
}



public class Client {
public static void main(String args[]) {
Product product;
product = Factory.getProduct("A"); //通过工厂类创建产品对象
product.methodSame();
product.methodDiff();
}
}

工厂方法模式

工厂方法模式又称为工厂模式,也叫虚拟构造器模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

例如:

1
2
3
4
5
6
7
8
9
10
public interface Factory {  
public Product factoryMethod();
}


public class ConcreteFactory implements Factory {
public Product factoryMethod() {
return new ConcreteProduct();
}
}

抽象工厂模式

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public interface Factory {  
public Product createProduct();
}

public interface Product {
public void getId();
public void getQuality();
}

public class ProductA implenment Product{
public void getId(){
System.out.printlt(“Get ProductA’s Id ”);
}
public void getQuality(){
System.out.printlt(“Get ProductA’s Quality ”);
}

}

public class ProductB implenment Product{
public void getId(){
System.out.printlt(“Get ProductB’s Id ”);
}
public void getQuality(){
System.out.printlt(“Get ProductB’s Quality ”);
}
}

public class AbstractFactoryA implenment Factory{
public Product createProduct(){
return new ProductA();
}
}

public class AbstractFactoryB implenment Factory{
public Product createProduct(){
return new ProductB();
}
}

-------------本文结束感谢您的阅读-------------