博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之工厂模式
阅读量:4097 次
发布时间:2019-05-25

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

说到工厂,你可能会想到批量生产……想到这里,那么我觉得对工厂模式就理解的差不多了。

还是举一个栗子吧。比如Lenovo集团不是生产各种本子嘛,首先呢,人家肯定不止生产一种本子,比如哈,这个厂子已经很高端了,想生产个啥,只要一输入名字,一按按钮,“滴”一声,本子就出来了。

输入:“ThinkPad X1” 滴一声 输出一台ThinkPad X1笔记本输入:“V480” 滴一声 输出一台V480笔记本输入:“Yoga13” 滴一声 输出一台Yoga13笔记本输入…… 滴一声 输出一台……

你现在就能想到,只要能建立一个厂子,这条产品线上的所有产品那就是滴一下的问题。所以看到这里你基本上也能猜到代码咋写了

首先你是要生产笔记本的,那么大的总纲(这里的总纲就是计算机)总得有吧。

package com.creational.factoy;public interface Computer {
public String getSymbol();}

总纲写好了,那每种型号的标准就继续写吧。

package com.creational.factoy;public class ThinkPadX1 implements Computer {
@Override public String getSymbol() { return "TPX1"; }}
package com.creational.factoy;public class V480 implements Computer {
@Override public String getSymbol() { return "V480"; }}
package com.creational.factoy;public class YOGA13 implements Computer {
@Override public String getSymbol() { return "YOGA13"; }}

好,个产品系列写好了,下面就是关键的一个大的厂房生产线:

package com.creational.factoy;public class ComputerFactory {
public static Computer createComputer(String serial){ if(serial.equalsIgnoreCase("TPX1")){ return new ThinkPadX1(); } else if(serial.equalsIgnoreCase("V480")){ return new V480(); } else if(serial.equalsIgnoreCase("YOGA13")){ return new YOGA13(); } throw new IllegalArgumentException(); }}

工厂类写好了,那下面用的时候就很爽了。

package com.creational.factoy;public class FactoryClient {
public static void main(String[] args) { Computer computer = ComputerFactory.createComputer("TPX1"); System.out.println(computer.getSymbol()); computer = ComputerFactory.createComputer("V480"); System.out.println(computer.getSymbol()); computer = ComputerFactory.createComputer("YOGA13"); System.out.println(computer.getSymbol()); }}

最后呢还是放一张UML图,等后面心情好了再看看这图那里长得好看。

这里写图片描述

参考文献:

你可能感兴趣的文章
PHP底层的运行机制与原理
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
PHP7新特性 What will be in PHP 7/PHPNG
查看>>
比较strtr, str_replace和preg_replace三个函数的效率
查看>>
ubuntu 下编译PHP5.5.7问题:configure: error: freetype.h not found.
查看>>
PHP编译configure时常见错误 debian centos
查看>>
configure: error: Please reinstall the BZip2 distribution
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
《python+opencv实践》四、图像特征提取与描述——29理解图像特征
查看>>
《python+opencv实践》四、图像特征提取与描述——30Harris 角点检测
查看>>
《python+opencv实践》四、图像特征提取与描述——31 Shi-Tomasi 角点检测& 适合于跟踪的图像特征
查看>>
OpenCV meanshift目标跟踪总结
查看>>
人工神经网络——神经元模型介绍
查看>>
人工神经网络——感知器介绍
查看>>
人工神经网络——反向传播算法(BackPropagation)
查看>>
进程的地址空间概述
查看>>
Windows 窗口底层原理
查看>>