zoukankan      html  css  js  c++  java
  • 02 简单工厂模式

    简单工厂模式:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是工厂方法模式和抽象工厂模式的基础和初步实现。

                      简单工厂模式的UML类图:

     从图中我们可以看到,简单工厂模式有三种角色。

    1、简单工厂(SimpleProductFactory)

        简单工厂角色负责创建所有实例

    2、抽象产品(Product)

      描述所有实例的所共有的公共接口

    3、具体产品(ConcreteProduct)

      具体产品是简单工厂模式的创建目标,所有创建的对象充当这个角色的某个具体类的实例

       上面总共有三种类,一个是工厂类SimpleProductFactory,一个是产品接口Product,一个便是具体的产品,例如产品A和产品B,这之中,工厂类负责整个创建产品的逻辑判断,所以为了使工厂类能够知道我们需要哪一种产品,我们需要在创建产品时传递给工厂类一个参数,去表明我们想要创建哪种产品。

    public class ProductClient {
        public static void main(String[] args) {
            Product product1 = ProductFactory.createProduct("A");
            Product product2 = ProductFactory.createProduct("B");
            product1.product();
            product2.product();
        }
    }
    
    class ProductA implements Product {
    
        @Override
        public void product() {
            System.out.println("生产产品A");
        }
    
    }
    
    class ProductB implements Product {
    
        @Override
        public void product() {
            System.out.println("生产产品B");
        }
    
    }
    
    interface Product {
        public void product();
    }
    
    class ProductFactory {
        private ProductFactory() {
        }
    
        public static Product createProduct(String productName) {
            if (productName == null) {
                return null;
            }
            if (productName.equals("A")) {
                return new ProductA();
            } else if (productName.equals("B")) {
                return new ProductB();
            } else {
                return null;
            }
        }
    }
  • 相关阅读:
    2.17NOIP模拟赛(by hzwer) T2 小奇的序列
    2.17NOIP模拟赛(by hzwer) T1 小奇挖矿
    题解【洛谷P3662】[USACO17FEB]Why Did the Cow Cross the Road II S
    题解【CF886B】Vlad and Cafes
    题解【CJOJ1070/UVA】嵌套矩形
    题解 【CF381A】 Sereja and Dima
    何时使用UI层的智能表单技术
    开机加电到系统打开究竟发生了什么?(1)
    asp.net MVC 常见安全问题及解决方案
    HDU 4422 The Little Girl who Picks Mushrooms【水题】
  • 原文地址:https://www.cnblogs.com/sunTin/p/6661376.html
Copyright © 2011-2022 走看看