zoukankan      html  css  js  c++  java
  • Java设计模式--工厂方法模式

    角色

    抽象工厂:担任这个角色是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类都必须实现这个接口。

    具体工厂:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用来创建产品对象。

    抽象产品:工厂方法模式所创建对象的超类型,也就是产品对象的共同父类或接口。

    具体产品:这个角色实现了抽象产品接口。

    结构图

     

     抽象工厂:

    package com.design.factorymethod;
    
    public interface Factory {
    
        Product createProduct();
    }

    抽象产品:

    package com.design.factorymethod;
    
    public interface Product {
    
        void productInfo();
    }

    具体产品:

    package com.design.factorymethod;
    
    public class ProductA implements Product {
        @Override
        public void productInfo() {
            System.out.println("Product A");
        }
    }
    package com.design.factorymethod;
    
    public class ProductB implements Product {
        @Override
        public void productInfo() {
            System.out.println("Product B");
        }
    }

    具体工厂:

    package com.design.factorymethod;
    
    public class FactoryA implements Factory {
        @Override
        public Product createProduct() {
            return new ProductA();
        }
    }
    package com.design.factorymethod;
    
    public class FactoryB implements Factory {
        @Override
        public Product createProduct() {
            return new ProductB();
        }
    }

    测试:

    package com.design.factorymethod;
    
    public class Client {
    
        private static Factory factoryA, factoryB;
        private static Product productA, productB;
        public static void main(String[] args){
            factoryA = new FactoryA();
            factoryB = new FactoryB();
            productA = factoryA.createProduct();
            productB = factoryB.createProduct();
            productA.productInfo();
            productB.productInfo();
        }
    }

    输出:

    工厂方法模式和简单工厂模式的区别:工厂方法模式的核心是一个抽象工厂类,而简单工厂模式的核心是一个具体类

  • 相关阅读:
    2018.10.10python homework
    2018.10.10python学习第十六天part3
    2018.10.10python学习第十六天part2
    2018.10.10python学习第十六天part1
    2018.09.28python学习第十三天part3
    2018.09.28python学习第十三天part2
    2018.09.28python学习第十三天part1
    当不搞技术好几年后,又回来了,忽然很亲切
    福大软工 · BETA 版冲刺前准备(团队)
    事后诸葛亮
  • 原文地址:https://www.cnblogs.com/LUA123/p/7794956.html
Copyright © 2011-2022 走看看