博客
关于我
设计模式之一简单工厂模式
阅读量:303 次
发布时间: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/

你可能感兴趣的文章
2021QS计算机专业排名发布:MIT斯坦福霸榜,清华北大进入前20
查看>>
JavaScript学习手册(45)
查看>>
【纪中2020.5.2日】模拟赛题解
查看>>
【纪中2020.5.06日】模拟赛题解
查看>>
eclipse中server location灰色解决
查看>>
idea 写web项目图片不显示
查看>>
实用网站推荐
查看>>
idea中写mybatis报错
查看>>
CSS浮动属性
查看>>
SVM多类识别
查看>>
svn 撤销已提交的错误修改
查看>>
算法工程师数学理论提高札记(improving)
查看>>
Android网络优化--精准获取流量消耗
查看>>
VTK:IO之WriteVTI
查看>>
VTK:图片之ImageExport
查看>>
VTK:图片之ImageMathematics
查看>>
VTK:图片之ImageOrientation
查看>>
VTK:图片之ImageToPolyDataFilter
查看>>
VTK:图片之ImageToStructuredPoints
查看>>
VTK:图片之ImageValueRange
查看>>