您的位置:首页 > 其它

《设计模式 系列》- 创建型模式 - 抽象工厂

2017-12-21 00:00 302 查看

前言

本文包含几部分:

1.UML图

2.实现代码

3.模式分析

一、UML图



二、实现代码

产品ProductA

public interface ProductA {
public void printProduct();
}

public class ConcreteProductA1 implements ProductA {

@Override
public void printProduct() {
System.out.println("This is ConcreteProductA1");
}
}

public class ConcreteProductA2 implements ProductA {

@Override
public void printProduct() {
System.out.println("This is ConcreteProductA2");
}
}

产品ProductB

public interface ProductB {
public void printProduct();
}

public class ConcreteProductB1 implements ProductB {
@Override
public void printProduct() {
System.out.println("This is ConcreteProductB1");
}
}

public class ConcreteProductB2 implements ProductB {
@Override
public void printProduct() {
System.out.println("This is ConcreteProductB2");
}
}

工厂类

public interface Factory {
public ProductA createProductA();

public ProductB createProductB();
}

public class ConcreteFactoryA implements Factory {

@Override
public ProductA createProductA() {
ProductA product = new ConcreteProductA1();
return product;
}

@Override
public ProductB createProductB() {
ProductB product = new ConcreteProductB1();
return product;
}
}

public class ConcreteFactoryB implements Factory {

@Override
public ProductA createProductA() {
ProductA product = new ConcreteProductA2();
return product;
}

@Override
public ProductB createProductB() {
ProductB product = new ConcreteProductB2();
return product;
}
}

调用代码

public class Client {

public static void main(String[] args) {
Factory factory = new ConcreteFactoryA();
ProductA productA = factory.createProductA();
ProductB productB = factory.createProductB();
productA.printProduct();
productB.printProduct();

factory = new ConcreteFactoryB();
productA = factory.createProductA();
productB = factory.createProductB();
productA.printProduct();
productB.printProduct();
}
}


三、模式分析

如果增加产品的话,只要增加一个产品实现类,一个工厂实现类,原来的代码不需要做任何修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式