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

    一、定义

    简单工厂模式,又被称为静态工厂方法模式。在简单工厂模式中,可以根据参数的不同,返回不同类的实例。

    二、模式组成

    1、抽象产品

    2、具体产品

    3、工厂

    三、适用的场景

    其实由定义也大概能推测出其使用场景,首先由于只有一个工厂类,所以工厂类中创建的对象不能太多,否则工厂类的业务逻辑就太复杂了,其次由于工厂类封装了对象的创建过程,所以客户端应该不关心对象的创建。总结一下适用场景:

    (1)需要创建的对象较少。

    (2)客户端不关心对象的创建过程。

    四、使用步骤

    4.1 创建抽象产品类,定义具体产品的公共接口

    1 abstract class Product {
    2     public abstract void draw();
    3 }

    4.2 创建具体的产品类

     1 class ProductA extends Product {
     2 
     3     @Override
     4     public void draw() {
     5         System.out.println("生成出了产品A");
     6     }
     7 }
     8 
     9 public class ProdcutB extends Product {
    10     @Override
    11     public void draw() {
    12         System.out.println("生成出了产品B");
    13     }
    14 }

    4.3 创建工厂类

     1 class  Factory {
     2     public static Product Manufacture(String ProductName){
     3         //工厂类里用switch语句控制生产哪种商品;
     4         //使用者只需要调用工厂类的静态方法就可以实现产品类的实例化。
     5         switch (ProductName){
     6             case "A":
     7                 return new ProductA();
     8 
     9             case "B":
    10                 return new ProductB();
    11 
    12             default:
    13                 return null;
    14 
    15         }
    16     }
    17 }

    4.4 外界通过调用工厂类的静态方法,传入不同参数从而创建不同具体产品类的实例

     1 //工厂产品生产流程
     2 public class SimpleFactoryPattern {
     3     public static void main(String[] args) {
     4         Factory mFactory = new Factory();
     5 
     6         //客户要产品A
     7         try {
     8             //调用工厂类的静态方法 & 传入不同参数从而创建产品实例
     9             mFactory.Manufacture("A").Show();
    10         } catch (NullPointerException e) {
    11             System.out.println("没有这一类产品");
    12         }
    13 
    14         //客户要产品B
    15         try {
    16             mFactory.Manufacture("B").Show();
    17         } catch (NullPointerException e) {
    18             System.out.println("没有这一类产品");
    19         }
    20         
    21         //客户要产品D
    22         try {
    23             mFactory.Manufacture("D").Show();
    24         } catch (NullPointerException e) {
    25             System.out.println("没有这一类产品");
    26         }
    27     }
    28 }
  • 相关阅读:
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    查看Linux下端口占用情况的命令
    linux的命令(1)
    xsheell的下载安装初级使用
    日交易,根据权重分配流量的算法,根据权重和交易笔数
    根据权重挑选通道的简单算法
    Java中的String与常量池
    JAVA虚拟机内存分配与回收机制
    JVM 内部运行线程介绍
    AspectJ切入点语法详解
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10496099.html
Copyright © 2011-2022 走看看