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();
        }
    }

    输出:

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

  • 相关阅读:
    SpringBoot自动配置原理(七)
    SpringBoot 集成Shiro
    Shiro配置跳过权限验证
    rsync+ssh同步备份文件
    okhttp3设置代理(http/https)
    Spring RestTemplete支持Https安全请求
    电商课题V:分布式锁
    电商课题:对付秒杀器等恶意访问行为的简单梳理
    电商课题:客户端的IP地址伪造、CDN、反向代理、获取的那些事儿
    电商课题I:集群环境下业务限流
  • 原文地址:https://www.cnblogs.com/LUA123/p/7794956.html
Copyright © 2011-2022 走看看