设计模式——简单工厂

设计模式——简单工厂

工厂角色:

package designpattern.creation.simplefactory;/** * 此处的工厂简单写成一个类,因为(简单工厂的工厂)不会有继承或拓展,可以不用写成接口。*/
public class Factory {public IProduct getProduct(String type) {// TODO Auto-generated method stubif (type.equals("A")) {return new ProductA();} else if(type.equals("B")) {return new ProductA();}/** 如果需要增加产品,则修改此类,需要在此增加判断—— 这样就破坏了类的完整性* —— 对修改封闭,对拓展开放!*/return null;}
}

产品角色:

package designpattern.creation.simplefactory;public interface IProduct {void use();
}package designpattern.creation.simplefactory;public class ProductA implements IProduct {public void use() {// TODO Auto-generated method stubSystem.out.println("ProductA.use()");}}package designpattern.creation.simplefactory;public class ProductB implements IProduct {public void use() {// TODO Auto-generated method stubSystem.out.println("ProductB.use()");}}

客户端:

package designpattern.creation.simplefactory;/*** * 简单工厂三因素:* 1 工厂只有一个方法* 2 方法有一个参数(或多个)* 3 客户端通过向工厂的那个方法传入不同参数来获取对应的产品**/
public class Client {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubIProduct product = new Factory().getProduct("A");product.use();IProduct product2 = new Factory().getProduct("A");product2.use();}}

  

总结:

1 简单,理解起来简单,客户调用简单

2 破坏了开放封闭原则

posted on 2014-08-16 19:46 CanntBelieve 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyAway2013/p/3916819.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

proteus如何添加stm32_电路仿真软件详谈(六),Proteus电路仿真软件的超级应用

一款优秀的电路仿真软件,可帮助用户更好实现相应功能,而Proteus电路仿真软件便是这样一款利器。本文中,将讲解基于Proteus电路仿真软件的SPI接口的设计与实现。通过本文,希望大家对Proteus电路仿真软件的应用具备深层次的理解。1、…

LeetCode 803. 打砖块(并查集)

文章目录1. 题目2. 解题1. 题目 有一个 m x n 的二元网格,其中 1 表示砖块,0 表示空白。 砖块 稳定(不会掉落)的前提是: 一块砖直接连接到网格的顶部,或者至少有一块相邻(4 个方向之一&#x…

python设计模式之享元模式

一、享元模式定义: 享元模式是一种用于解决资源和性能压力时会使用到的设计模式,它的核心思想是通过引入数据共享来提升性能。 在开发3D游戏时,例如有成千上万的士兵或者有成千上万棵树,如果一个3D地带的每个对象都单独创建&…

allegro多版本安装_Homebrew 安装旧版本软件包马克

大家好我叫乌图米,我会在这里陆续跟大家分享一些有的没的数码体验、软件技巧、系统知识,欢迎大家留言与我交流~如果你喜欢文章的内容,可以在文末点个赞 ,你的支持就是我最大的动力 !这篇文章介绍一下 Homeb…

利用Python实现PDF转文本,就是如此简单!

一、前言 对很多人来说,将PDF转换为可编辑的文本是个刚需,却苦于没有简单的方法。发现 pdf 幻灯片,效果还不错。 传统的讲座通常伴随有很多pdf幻灯片。一般来说,想要对自己的讲座做笔记,需要从pdf复制、补充大量内容…

LeetCode 1725. 可以形成最大正方形的矩形数目

文章目录1. 题目2. 解题1. 题目 给你一个数组 rectangles &#xff0c;其中 rectangles[i] [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。 如果存在 k 同时满足 k < li 和 k < wi &#xff0c;就可以将第 i 个矩形切成边长为 k 的正方形。 例如&#xff0c;矩形…

Qt pro文件语法

在Qt下做开发的时候.pro文件就是工程的配置文件&#xff0c;虽然很多时候里面的选项是工具自动生成的&#xff0c;但是难免会需要手动修改的时候&#xff0c;下面就记录一下它的基本语法 #&#xff1a;在.pro文件中表示注释&#xff0c;注释当前行 TEMPLATE&#xff1a;模板 IN…

Python实现给指定的微信朋友发信息

一、环境准备 1、Python3.6 2、itchat第三方库 pip install itchat-uos 3、pyinstaller第三方库 pip install pyinstaller 二、核心代码 import itchatimport timeprint("请扫描弹出的扫二维码")itchat.auto_login(hotReloadTrue)boom_name input("请输…

LeetCode 1726. 同积元组(排列组合)

文章目录1. 题目2. 解题1. 题目 给你一个由 不同 正整数组成的数组 nums &#xff0c;请你返回满足 a * b c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元素&#xff0c;且 a ! b ! c ! d 。 示例 1&#xff1a; 输入&#xff1a;nums [2,3,4,6] 输…

vuedraggle choose_如何拆分员工工资条,教你一招一学就会。(五)函数CHOOSE

作为人事管理者&#xff0c;我们最重要的一个工作就是工资表&#xff0c;那么如何将工资表拆分成工资条呢&#xff1f;我们最后看一下函数CHOOSE对函数MOD、ROW、OFFSET 、INT的嵌套使用。第一步&#xff0c;我们输入函数CHOOSE&#xff0c;第一个值是序号&#xff0c;我们将之…

about window.onload

在前几天一次练习中因为我要在页面加载完成后调用一个函数&#xff0c;于是我在javascript中用了window. onload&#xff0c;这个方法以前从学习js就在使用&#xff0c;有时还用来调用多个函数。然而我在这次想偷懒&#xff0c;就这样写了一段代码&#xff1a; window.οnlοad…

用pythone画棵圣诞树,祝大家圣诞快乐

一、python环境&#xff1a; 根据电脑的情况去下载对应的python安装包&#xff0c;我使用的是python3.7.0的版本 二、python编译器&#xff1a; 打开pycharm&#xff0c;然后我们创建一个project&#xff0c;在project下创建一个python file&#xff0c;建议取名字不要使用中…

LeetCode 1727. 重新排列后的最大子矩阵(前缀和+排序)

文章目录1. 题目2. 解题1. 题目 给你一个二进制矩阵 matrix &#xff0c;它的大小为 m x n &#xff0c;你可以将 matrix 中的 列 按任意顺序重新排列。 请你返回最优方案下将 matrix 重新排列后&#xff0c;全是 1 的子矩阵面积。 示例 1&#xff1a; 输入&#xff1a;ma…

亚马逊出的平板电脑_亚马逊Fire HD 8 Plus评测:适合看视频和轻度游戏的廉价平板...

导语&#xff1a;近日&#xff0c;亚马逊升级了旗下的Fire HD 8和Fire HD 8 Plus平板电脑&#xff0c;使其具有更多的内存&#xff0c;更快的处理器和USB-C充电功能。亚马逊Fire HD 8 Plus是Fire HD 8 的一个增强版本&#xff0c;它提供了较HD8更快的速度&#xff0c;拥有一些通…

利用python转换图片格式

前言 常见的图像任务通常需要把照片统一成相同的格式&#xff0c;所以此文章正是为了统一格式而生&#xff0c;常见的主要有cv2和PIL.Image的相关操作&#xff0c;照片格式是一串数字加上后缀名 工具一&#xff1a;cv2 pip install opencv-python 之后就可以 import cv2 1.…

C# 6.0语法新特性体验(二)

之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性&#xff0c;现在随着Visual Studio 14 CTP3的发布&#xff0c;又陆续可以体验一些新的特性了&#xff0c;这里简单的介绍一下之前没有介绍的新语法。 属性表达式&#xff08;Property Expressions&#…

TensorFlow 2.0 - 张量/自动求导/梯度下降

文章目录1. 张量2. 自动求导、梯度下降学习于&#xff1a;简单粗暴 TensorFlow 2 1. 张量 import tensorflow as tf print(tf.__version__) # 2.3.1random_float tf.random.uniform(shape()) # tf.Tensor(0.80420315, shape(), dtypefloat32) zero_vec tf.zeros(shape(2)) …

苹果台式机_苹果史上最强台式机来了:顶配售价45万

12月11日消息&#xff0c;国行版Mac Pro正式在苹果官网上架开售。根据苹果官网显示&#xff0c;Mac Pro最基础版本需要花费47999元&#xff0c;基础版Mac Pro配置上采用3.5GHz 8核Intel Xeon W处理器&#xff0c;32GB (4x8GB) DDR4 ECC内存&#xff0c;Radeon Pro 580X图形处理…

Python多进程及多参数的处理方法

一、多进程pool.map()方法一 import time from multiprocessing.pool import Pooldef numsCheng(i):return i * 2if __name__ __main__:time1 time.time()nums_list [1, 2, 3, 4, 5, 6, 7, 8, 9]pool Pool(processes5)result pool.map(numsCheng, nums_list)pool.close()…

【floyd】HDU 1874 畅通project续

之后的题解偏重有用/总结性质&#xff0c;尽量理解算法本身而不是题&#xff0c;时间复杂度什么的也能够放放。 非常久之前做过这个题&#xff0c;当时使用dijkstra做的&#xff0c;关于几个最短路算法&#xff0c;分类的话能够分为下面几种。 1、单源最短路&#xff1a;已知起…