设计模式~简单工厂模式(Factory)
简单工厂模式Simple Factory根据提供给它的数据,返回一个类的实例。通常它返回的类都有一个公共的父类(或者接口对象)。
简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂。如数据库生产工厂就是简单工厂的一个应用。
采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类 型,则需要修改工厂,不符合OCP(开闭原则)的原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。
下面是我实例中的类结构图,它有一个ICreate的公共接口,有一个方法叫Create,返回值为Void
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAABrCAIAAADVQdixAAAQs0lEQVR4nO2dy28bxxnA+QcEPRXoYdM/YA9BD00uVMFDi4q6NbdCSx3aBKQOSeqgaalnAieWjCCIY4gMYEmUDFkPsC4qUXUaUZFi6xGliSm3QPygKHlFiWL1AhQlcd3YSCG0h9l57uxyV5SzpPgBv8Nqdufbb3Z/OzsjcLC+RDK98a99ADjd+EB0oBYA0YGaAEQHagIQHagJfIlkeqO4L+Xbw1zhzz/89jBndQAAVAuWoiPL/1Po/rz3R+A6UO3IRUeWPyycf5h96Zvl5wXXjw6OPM8bAFwhEd3oyze7/519+cHy81/NP/vlhz9+84WnkOtHB0e3w3cq1PWleF1D/IbnaQCVhy+RTOeL+wQ8YjmPLP96/rkvP3waWZ7Hln83/h1yPV+81dkQUFSOuvO32IByluJ1DfHr0nI2jtVhZYRV1ICitgyWEw2oQkTR0bj84cpL3yw///X8s4e4L88zln/X+9/7r+rvPnOBVjwZIyebVK1zCW83T7puj43ox1AWRD9FSHr0y60/+Gb5V1/NP/vVjZ+8+cJTZ85eQuReXmUtPzo4ohUFJ2gPaoh7/bxm9KYN8evMe4Dv/iebhL4WhV2K1zW0NDUEFDXQNGbUbRpDe41ypiR+3ZyATFmaEvt0qSQanyQN2DKIE+tsRn/e6mwINI2RCCQaUEGIouex64dTT19u/QHqy8+cvZQv7h8dHF372QcSy4uCSYyvxFRcMthMRTF3loPNAUUNKKQvp9W1zqX9/FiLQjbY8iLa1TJohJUmYD10GWtRmifznK9CoyabVGPX9fOa0jyJvKcHGxGYDaDCkIiex64jy/NY9Hxx/+jg6N1nLmzlH4lVWHElVqGektHLflQw1mLoTnt03E+zG+LTpXWOWWgtPR17mBiNT1JsnTmg8WgNNvOPClAxyEXPF/eJ5XlG9Hxxfyv/KJTIFQ8fc8cLKsglZnQvPfydbCI+HUN0K2XZEvI2kETja5UWHSluGnoBFYOl6CxE9OLh41Ai1/eP//3itZuc66Jz4higyRiL3+pswINmdnRB7DcPWhyKTgYzxtDFahAiKbl+XiMzB7GWkaRs6CJ5cpz9xwnwAheiE8s7/7YfSuR8P+2jx1hORtHsk07yiApoOI7necgn9p+VzCTSRnRh2C2ZjFoMS8h8QA3UNbeYayGt+SRlJ6LgZ9jrOwpIcSr6mbOXBMvF0cv3T0X9+w+9UjxPA7DAl0im81v7TigePn7uxQ+p5c5qPUE+idcF49c9T2NrP7+1P9gcaBr1Pg3ACiT6nkOKh4+x5U6rAEAl4Esk0+tbe84pHj52dTwAVAKuRQeAagREB2oCEB2oCUB0oCYA0YGawE50sjja8ywBoEwsRRcWR3ueKACUg1x06eJosvfo4MjzvAHAFRLRbRZHr2/tkcXRnqcu4ZN4XTD+sedpQEsrD18imdYLewSbxdF6YU9YHK0XljuCpsXR3ctsQDmL8bpgfFZazsaxOqyMsOgXiAPlRDsOyx3BgGIT7aRaClggim61OFpnLCfLRk/6PqVCqtaxiLcjKdftsRH9GFqcoEyL8bpgSyhIWnciAUF0F0h6dOeLoy2vO+1BjVs7241XIgfjs8x7gO/+UyGhr0VhDUsCihoIjRp1Q6PEHiMULonPmhOQaUFTYp8ulUTjk6QBWwZwYh0R9OdyRzAQGiURJDbPdmt13csDEdxeWp3P3Kql5mxB9DJF17HrZHG0Xtg7c/aSXtgTFkdztbjrzvhK7h8uGYhQUcz3aQDde9KX0+pax+KePtqikA22vIB2tQwYYaUJWA9dRluUSErnfBUalQqxwkVSyHt6sBGB2eBY7ggyaRf2uOqkLTYtNWcLortEIrqOXUeW61h0vbBHFkeLVdjrLrEK9ZSMXvb3abTF0J32c9gPdkN8urSOUQutpadjDxOj8UmKrTMHNB6tgQj/qIiNxf29EJAVXdpSJ9kCtshF1wt7xHKdEV0v7JHF0Rb30kZiRvfS9ykVIj4dQ3QrZdkS8jaQRONrlRYdKW4aehX2dG7UIZtkOxHdSbaALZaisxDRhcXREicKe+yLnuwNGWNx/BJnBjN0ezFeZx60OBSdHQDIErBRf7ZbIzMHsZaRpGzoInlymCkHrcuH5fI8TkuNbEF0l7gQ3bw4mrvN8skomn3SSR5RAQ3H8TyPOiGZctn1c/yw282LfgDPBesiLeZaSE0+SdmJKPgZpldAeiTz5mEvXamhi5gtiO4Sp6JLF0d7nH1F3WzzrBGoJByJjhAWR3ueekWJLp+GAhWDC9H1Al0c7XneAOAKXyKZvl/YdU7x8LGr4wGgEnAtOgBUI75EMn1/cxcATjcgOlATgOhATQCiAzWBnehkcbTnWQJAmViKLiyO9jxRACgHuejSxdFk79HBked5A4ArJKLbLI6+v7lLFkd7nrqEhVhdMDbreRpA5SGKbrM4+j62nCyOvr+ZkSyO7sqUPrGVkQuxOjaOW3EdhFXUgKJGE+VEOwYjUXr2SOo4EWyS8bx11YAvkUyvbe4SrBZHrzGWk2WjtOJCzB+MzTBxSiA/PhVStfYFvB1JOY1WMg236ZVTy8RMl6ao0X78Z3+Ebp9MMp62rloQRXe1ONryqi3E/Phn5UjcmS6yODo2s5lpx+8Bf1eGOXsqpPISoLALMX8waiwZHjHqhkbQ3ihdHD3CpCEkILupNCX26SK/Rx/hk6QBo/04sfYI+jPTHgyERkgEEg2RaQ8KJUJ128tllFgl43nrqgZRdOI6WRy9trl75uyltc1dYXG0+c7ha834SkzFJUZ/ZtGd9OPF0aLo6PqORBWywZZvol3RfiOsNAHu5c49TiNRJZJa4+6o0KhUSDV2zXRpSiSFzKAHGxGYDe6ZN3XhXHVTtpLchGQqpnXVg0T0New6snwNi762uUsWR4tV2Dskue6oL2FugP17E41o0RU3enTcT7Mb4tOltY9Y3Hjp6djDxGh8kmLrzAEN+fojvExWLS1xuUy5CclUTuuqB18imV7b2DXz7WGObJ85e4lsk8XR3PHzMX8wNmPe5sC62x3DHhztR4eRg4UNLkgqpGrtw+Zyi5TmY35Va59n9trUElpHEmMO7o8EQsOpEGqd2BB8IoeXy5ybVTLet65qsBSdhYguLI62uNapkBoIDXPXNNSVWdvYXdvItAe19nl8QdmLizYiKS6gc9GHowotkSRgI8dMl6YEYzMbmfagqZaRJA1ovNzlbgX8RjO5BhqTUSqNYJJdtjg3eTKeta4KcSG6eXG05bWe59+bG3QaRC4WGo77uzLMFaczJEXFz4O96OwbXDiATUD2AunHy439kai5FrrxfJKyE1HwM2wS3RCI+fdiqcsly02ejEetq0Kcii5dHO1x9qXHP98j6JXieRrQOgsciY4QFkd7nnpFid4f4QcGp4tT0DoXoq9t7JLF0Z7nDQCu8CWS6dWNXecUDx+7Oh4AKgHXogNANYJE3wGA0w2IDtQEIDpQE4DoQE3gSyTTq/kdADjdgOhATeBC9AcPH137+J/TC3cGrs7l1r1PHQCc41T0Bw8fzX12942LYxcS1678ZWng6kIluj4X8wdjH3meBlB5iKIXtg++WNmaXbp3O1dgy8fTN9+4OHZ3dXM1v3N3dXMktfj6heRqnv29If653LlM6RNbGTlHf2HnP5dxLa6DsMZv9MqJ5oo55oeBqGSYWSgdnjhmTHieXeJLJNO5/A7hi5WtBw8fLWZWL17+4OLgtZa3L4d+d/7nv341PXf73cQ1ctj8Z3df/ONFWnEu5g/Gppk4JZAfP6GpWtsc3g5POI1WMg236ZVTyzbO9DlNUaN9eFdfmG57kFgtIYr+8dK9xczq2F//3v3+1b7k7Ovvjf7m9+/8svG1969MXxlfuru6mcvv3F3dnJpbDr3ytuWlp92YIe70Obo4ejqfaQvSbps5+4Sm8jcehZ2L+YNRLRhQ1IA2bNTVhtFeo5wpiU2bE5CZQVNiny6VROOTZDrmPpxYWxj9mWkLBrRhEoFEM1+cTFtQvheHsr10RolVYqbIgI3ot3OFi5c/6H7/6q07Onfo+k7iT3PJa5/OfXpn8qPPf/vae7furMvuJe8rMRWXGH2YRZ/UFzZe6DmxutY2t5Mbjipkgy3Po13RPiOsNAFu6MI9TsNRJTyR43wVGjWhqcau6XOaEp5AetGDjQjMRl4Wh7kO3F6VfU74zCV5ColZHw8wiKLbsb7T8c7oi3+4GHrlbc5y4SpLrEI9JXOP7e8KGsUin4weHYvCbohPl9Y2bKG19HRz3DqdafMx5vPmsaziwYZwfWH+UbGJ4/TSmfIUAto8wACDG9FtEO6WXGJG99Ldz4RGfDqG6FbKsiXkbSCJxtcqLTpS3DT0Es9uP7BxlqdVYoAtT0B05kVP9mrGWBwPUtmXONmei/nNgxaHopPBjDF0sRqESEqmz2lk5iDWMpKUDV0kRjJTDqGBNpPRUpfOlKc8McCeJyG6+W1LJ3lEBTQcx9MpdNvoNIubRNqIbn7Lm9/p0t6azAfUgD8cNddC9vBJyk5E4Sea7NPLjyuYyWVA8syYBiqSPOWJ4YENIOOERPeEinpxo1eK52kAFvgSyXRufacqQaJ7nsb6Tm59py8c0K54nwZgRTWLDgCO8SWS6ZX1HQA43YDoQE2ARN8GgNMNiA7UBCA6UBOA6EBNYCc6+XK051kCQJlYii58OdrzRAGgHOSiS78cTfYeHRx5njcAuEIius2Xo1fWt8mXoz1PXcJcjz/Yk/Y8DWha5eFLJNMr+jbB5svRK/q28OXoFf1mW71pcfRbN9mAcm70+Ot70tJyNo7VYWWERT8k7C0nmiu4Uzs775NLpobxJZLprL5NsPpydJaxnHxTl1a80eOv75li4pRAfvx4o6q13sDb4XGn0Uqm4Ta9cmrZBBmKKscOeCLJ1DCi6K6+HG15G2g3Zog79Rb+EXZ9z5R+s7WedtvM2ccb1Wiv+e7e6PHXRxvrA4oaaBwy6jYOob1GOVPSM2VOQGYJTYl9ulQSjU+SBoz24sRaw+jPm631gcYhEoFEM18Z3EDT9ZHFd9Y0rwWqFkTRs9h18uXorL595uylrL4tfDmaqyW9naypuKQ3TEWZMmXTayyOHs+K1bXWG9vZoahCNthyHe2K9hphpQmIQxd63qGoEh7Pcr4KjRpvVI1dU29pSngc2UYPNiIwG7IrM/WWpkjTk8d31jSvBaoWJKJnsevI8iwWPatvky9Hi1XYiy6xCvWUjF72N2koauhOe3TcmbEb4tOltQ5ZaC09HXuYGI1PUmydOaDhX2+Yf1TMZ5FenxLxbZvmtUDVglz0rL5NLM8yomf1bfLlaPF2srdKLjGje+neaLyR3O9jiG6lLFvCDhvKFR0pbhp6WZ3apqSk6NCLHwtL0VmI6MKXoy1uHn0Rk72Nxlj8Zms9HjSzr2Biv3nQ4lB0MpjhRwKy9MQSPKKQDV2MJGVDC8mTw0w52EaJaprSs49v3zTAGS5EN385mh5jORkN4FGpOPtEw3E8z0M+0fkfN4m0EV14iUtmbBbDEjIfQIuOTbWQTHySshNR8DNMr4D1u8tuPCPMVks1zWuBqgWnoku/HO1x9hX1Hi/nX4cV3rRTgSPREcKXoz1PvaJskExDT0vTTgcuRM/q2+TL0Z7nDQCucCd6Vt8Gy4FqxJdIpu/p2wBwuvElkul797cB4HTzfx5wC5exx5unAAAAAElFTkSuQmCC" alt="" />
其中公用的接口代码如下:(最后工厂的返回值类型)
1 /// <summary>
/// 简单工厂接口,返回值类型
/// </summary>
4 public interface ICreate
5 {
6 void Create();
7 }
而下面,分别用people和animal两个类去实现了ICreate接口,并实现了它的Create方法。
1 /// <summary>
/// 人类实现工厂接口
/// </summary>
4 public class People : ICreate
5 {
6
7 #region ICreate 成员
8
9 public void Create()
10 {
11 Console.WriteLine("创建人类");
12 }
13
14 #endregion
15 }
16 /// <summary>
/// 动物实现工厂接口
/// </summary>
19 public class Animal : ICreate
20 {
21
22 #region ICreate 成员
23
24 public void Create()
25 {
26 Console.WriteLine("创建动物");
27 }
28
29 #endregion
30 }
而对于外界来说,会有另一个类去为外界提供服务,它们可以需要建立People或者Animal类型的实现,代码如下:
1 public class CreateFactory
2 {
3 public static ICreate GeneratorCreate(string createName) {
4 switch (createName)
5 {
6 case "People":
7 return new People();
8 case "Animal":
9 return new Animal();
10 default:
11 throw new NotImplementedException();
12 }
13 }
最后,在使用它时,直接使用CreateFactory.GeneratorCreate("类型条件名")即可生成你的类对象了。
以上内容转自 张占岭
设计模式~简单工厂模式(Factory)的更多相关文章
- Golang设计模式—简单工厂模式(Simple Factory Pattern)
Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...
- 3. 星际争霸之php设计模式--简单工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 深入浅出设计模式——简单工厂模式(Simple Factory)
介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ...
- 设计模式 | 简单工厂模式(static factory method)
按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识. 但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了. 也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍. ...
- python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...
- 设计模式 — 简单工厂模式(Simple Factory)
定义:定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常有公共的父类. 模式类型:创建型模型 Factory(工厂角色):即工厂类,负责实现创建所有产品实例的内部逻辑:工厂类可以 ...
- Java设计模式-简单工厂模式(Static Factory Method)
简单工厂模式(Static Factory Method) 简单工厂模式是类的创建模式,又叫静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种 ...
- C++设计模式——简单工厂模式
简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
随机推荐
- 新建childTest文件夹,里面依然放进我们需要的.py文件即可
一.模块 我们编写文件:a.py,放在C:\Python34\Lib\sit-packages下,里面写上一句代码为: print('this is a') 之后我们就可以在我们的代码里面引用a.py ...
- 新浪微博API开放平台进行程序开发第一步(java)
申请开发者权限步骤: 1.登录sina微博,点击“应用” 2.点击“微博开发平台 我也要做开发者” 3.点击“我的应用”,填写“开发者信息” 4.点击“创建应用”,就是你将要开发的微博应用程序,可以是 ...
- 【新产品发布】《GM1001 4~20mA 高精度电流采集模块》
一.主要特性 1.测量精度高达±0.01%FS±0.002mA: 2.采样电阻仅10欧姆(20mA时压降仅0.2V),对被测系统影响 微乎其微: 3.差分输入,可测量正反电流无需改动硬件,使用方便: ...
- Web 在线文件管理器学习笔记与总结(7)重命名文件
rename($oldname,$newname) 重命名文件或目录 <<<EOF EOF; 使用heredoc 技术,来部分实现界面与代码的准分离 重命名时,需要验证新文件名的合法 ...
- LR动态脚本的处理
在处理SSO修改密码脚本时遇到一个问题,根据用户名的不同,提交请求中数据会不一样.处理此问题,如果经分析用同类型的账号(每个账号含有的子账号类型和数目一致)测试与实际不同类型账号性能没有大的差别,则用 ...
- Law of total probability
https://en.wikipedia.org/wiki/Law_of_total_probability the total probability of an outcome which can ...
- jeecg的cq查询方式
@RequestMapping(params = "datagrid") public void datagrid(TbStudentDepEntity tbStudentD ...
- 蓝牙的Baseband说明
蓝牙的radio部分使用2.4GHz的ISM段,2400 - 2483.5 MHz,通道间隔1MHz,GFS调制,采用跳频技术,每秒至少1600次.连接完成后的跳频次数为1600次/s,在inquir ...
- maven--composer---setting.xml(updatepolicy)---mvn install , mvn deploy
场景:最近再整系统的自动部署流程,由于公司的jar包在svn以及mvn的仓库上都存在,开发人员在开发的过程中都依赖mvn仓库中的Jar 包,在jar上线的时候,配置管理人员把jar 从svn管理的工作 ...
- Android Studio工具修理集
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 1.Common依赖项目找不到.因为主项目没有引进setting.gradle 2.从Eclipse ...