博客
关于我
设计模式之一简单工厂模式
阅读量:304 次
发布时间:2019-03-04

本文共 1468 字,大约阅读时间需要 4 分钟。

提纲

  1. 简单工厂
  2. 工厂模式
  3. 抽象工厂

细节

情景:  奥迪车 只能生产奥迪,生产不了冰淇凌 我想都生产

简单工厂 :我有一个很牛的工厂,什么都会生产,你给我什么 我就生产什么
落地:

package com.mcd.test.test;// 1 公共接口abstract class Product{    public abstract void Show();}class ProductA extends Product{    @Override    public void Show() {        System.out.println("A");    }}class ProductB extends Product{    @Override    public void Show() {        System.out.println("B");    }}class ProductC extends Product{    @Override    public void Show() {        System.out.println("C");    }}//2  工厂生产过程class  Factory {    public static Product Manufacture(String ProductName){        switch (ProductName){            case "A":                return new ProductA();            case "B":                return new ProductB();            case "C":                return new ProductC();            default:                return null;        }    }}//3实际应用    public static void main(String[] args){        Factory mFactory = new Factory();        try {            mFactory.Manufacture("A").Show();            //客户要产品B            mFactory.Manufacture("B").Show();            //客户要产品C            mFactory.Manufacture("C").Show();            //客户要产品D            mFactory.Manufacture("D").Show();        }catch (NullPointerException e){            System.out.println("没有这一类产品");        }    }

总结

一般工厂就这样

  • 1 写公共接口
  • 2 写实现类
  • 3 写工厂制造方法
  • 4 写应用
    缺点: 一旦这个工厂不能正常工作,整个系统都会受到影响;一旦添加新产品就不得不修改工厂类的逻辑。
    应用场景:(1)工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。(2)客户端只知道传入工厂类的参数,对于如何创建对象并不关心。

转载地址:http://lijq.baihongyu.com/

你可能感兴趣的文章
hdu-1211 Complete the Sequence
查看>>
属性闭包求解算法——数据库考试复习
查看>>
中缀表达式转后缀表达式
查看>>
砍树问题(二分法)
查看>>
poj3260The Fewest Coins
查看>>
poj3617
查看>>
poj3069
查看>>
Day160.MySql优化的前置知识简介、Linux 安装 -MySql高级
查看>>
Day161.索引优化分析①[慢SQL、Join查询、索引简介、Explain性能分析] -MySql高级
查看>>
Day243.JWT结合SpringSecurity -springsecurity-jwt-oauth2
查看>>
Java洛谷P5461 赦免战俘讲解
查看>>
关于 form表单 嵌套问题的解决方案
查看>>
论转发与重定向参数传递问题(jsp+servlet项目开发遇到的问题)
查看>>
Spring Boot怎么样处理静态资源(静态资源映射规则)_Web开发
查看>>
Android—— log.e(),log.d(),log.i()等的区别
查看>>
js中时间戳转时间格式
查看>>
JS中的数据类型
查看>>
位运算
查看>>
MarkDown
查看>>
线性代数 16 向量空间
查看>>