0
点赞
收藏
分享

微信扫一扫

Java 实现抽象工厂模式


抽象工厂模式

里面有几个概念:抽象工厂、实体工厂、抽象产品、实体产品

抽象工厂:定义创建产品的抽象方法

实体工厂:具体的创建哪种产品

抽象产品:一个接口或基类

实体产品:实现具体功能,或派生

类图

Java 实现抽象工厂模式_抽象工厂


1. //抽象产品1  
2. public interface IProduct1 {
3. public void show();
4. }




1. //抽象产品2  
2. public interface IProduct2 {
3. public void show();
4. }


1. //实体产品1  
2. public class Product1 implements IProduct1 {
3. public void show() {
4. "创建了1型产品");
5. }
6. }



1. //实体产品2  
2. public class Product2 implements IProduct2 {
3. public void show() {
4. "创建了2型产品");
5. }
6. }




1. /*
2. * 1A 1B属于Product1 同一产品等级结构中
3. * 2A 2B属于Product2
4. */
5. public class GradeProduct1A extends Product1 {
6.
7. @Override
8. public void show() {
9. super.show();
10. "这是产品1下的:产品A");
11. }
12.
13. }



1. public class GradeProduct1B extends Product1 {  
2.
3. @Override
4. public void show() {
5. super.show();
6. "这是产品1下的:产品B");
7. }
8. }





1. public class GradeProduct2A extends Product2 {  
2.
3. @Override
4. public void show() {
5. super.show();
6. "这是产品2下的:产品A");
7. }
8. }



    1. public class GradeProduct2B extends Product2 {  
    2.
    3. @Override
    4. public void show() {
    5. super.show();
    6. "这是产品2下的:产品B");
    7. }
    8. }



    1. //抽象工厂 创建不同的抽象产品  
    2. public interface IFactory {
    3. public IProduct1 createProduct1A();//1类产品 型号A
    4. public IProduct1 createProduct1B();//1类产品 型号B
    5. public IProduct2 createProduct2A();//2类产品 型号A
    6. public IProduct2 createProduct2B();//2类产品 型号B
    7. }


    1. //实体工厂 创建实体产品,返回类型为抽象产品  
    2. public class Factory implements IFactory {
    3.
    4. public IProduct1 createProduct1A() {
    5. return new GradeProduct1A();
    6. }
    7.
    8. public IProduct1 createProduct1B() {
    9. return new GradeProduct1B();
    10. }
    11.
    12. public IProduct2 createProduct2A() {
    13. return new GradeProduct2A();
    14. }
    15.
    16. public IProduct2 createProduct2B() {
    17. return new GradeProduct2B();
    18. }
    19. }


    1. /*
    2. * 抽象工厂模式:用来创建一组相关或者相互依赖的对象
    3. *
    4. * 流程:抽象工厂,实体工厂 生产产品
    5. * 抽象产品,实体产品 实现产品功能
    6. * 缺点:当需要增加一个产品(由抽象和实体构成),工厂都需要更改
    7. */
    8. public class Test4Abstract {
    9. public static void main(String[] args) {
    10. new Factory();
    11. IProduct1 product1a = factory.createProduct1A();
    12. product1a.show();
    13. IProduct1 product1b = factory.createProduct1B();
    14. product1b.show();
    15.
    16. IProduct2 product2a = factory.createProduct2A();
    17. product2a.show();
    18. IProduct2 product2b = factory.createProduct2B();
    19. product2b.show();
    20. }
    21. }

    举报

    相关推荐

    0 条评论