.NET简谈设计模式之(工厂模式)

简介: 文章开头本人申明一点,本人写的文章力求让看的人能理解精髓而不是专业化,博客园的好多人在写文章的时候总想着怎么怎么专业化,巴不得看的人都看不懂才能体现出他的技术,他的牛B,技术不是用来显威风用的,在你掌握了某种技术的时候,不要想着横扫博客园之类的思想,有点技术就开始浮躁连说话都开始像李莲英;我不是想这...

文章开头本人申明一点,本人写的文章力求让看的人能理解精髓而不是专业化,博客园的好多人在写文章的时候总想着怎么怎么专业化,巴不得看的人都看不懂才能体现出他的技术,他的牛B,技术不是用来显威风用的,在你掌握了某种技术的时候,不要想着横扫博客园之类的思想,有点技术就开始浮躁连说话都开始像李莲英;我不是想这样攻击别人,在技术的这条路上大家能平易近人互相学习,以交流技术为主,不要想着看别人的文章就是在挑刺,想法设法打击别人的信心,人无完人,人外有人,山外有山,各有所长,大家互补才能真正使我们国家的软件实力得到发展,本人很少说此类的话;说者无意,也许听着有心;本人所要说的是环境而不是想说谁,希望会技术的人能多帮助一些想学技术的人;

我下面要简谈的是常用的设计模式中的工厂模式,本人有个习惯就是就复杂的东西能以最简单最能体现思想的方式展现给大家,专业不专业不要紧,要紧的是能让看你文章的人不觉得是在浪费时间;工厂模式的大概思想是这样的:我们还拿现实生活中的场景来描述吧,比如我要买一个脸盆,我不需要知道这个脸盆是从哪里来的,怎么做出来的,我只要知道它是脸盆能用的脸盆,在代码中我需要一个脸盆对象时,我首先会去NEW一个脸盆对象,在NEW的时候我要来实现具体怎么NEW怎么构造等等细节,工厂的思想就是想让需要的人能通过一个公共的地方来获得,这个地方就是工厂,工厂负责所有的实例构造,尽量减少重复劳动,尽量使代码简单;请看图:

1:

所有想要获取指定实例的对象都是通过统一的接口方法获取,在工厂里面的事情调用者就无需关心了,每个人的实现方式不同,各有优势;为什么需要工厂呢,工厂的寓意就是尽可能的将重复的、冗余的、难以维护的代码进行整合;

每当我们去买脸盆的时候,可能有的人喜欢买品牌的,这个时候品牌就是我们公共的接口部分,如果读者不了解接口的相关细节可以借鉴本人的另一篇文章“.NET简谈接口”在这个复杂的社会里我想没有品牌可能我们的生命安全就难以保证了;有个规范性的标准,我们去挑选脸盆的时候就有方向了;请看代码图:

2:

在我们解决方案中,有四个项目,分别用来标识几种角色;在我们去超市买东西的时候,我们只要根据我心目中的品牌去购买就行了,一切问题直接找厂家;消费者的权益得到了保障;看实现代码:

3:

4:

 

上面两张图分别代表着两家不同厂商对生产方提出的生产标准,我们将其抽象成规范接口;继续请看图:

5:

6:

7:

8:

简单的工厂模式就介绍到这里了,希望能给您很直观的理解;谢谢;

目录
相关文章
|
前端开发 .NET C#
ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程   ASP.NET Core MVC 设计模式 上一章节中,我们提到 ASP.NET Core 支持 MVC 开发模式,不知道大家对 MVC 设计模式是否了解,算了,不管了,本章节我们就来讲讲 MVC 设计模式吧。
2430 0
|
C# 设计模式 .NET
使用C# (.NET Core) 实现状态设计模式 (State Pattern)
本文的概念性内容来自深入浅出设计模式一书 项目需求 这是一个糖果机的需求图.  它有四种状态, 分别是图中的四个圆圈: No Quarter: 无硬币 Has Quater 有硬币 Gumball Sold 糖果卖出 Out of Gumball 没有糖果了 这个图很像一个状态图.
1966 0
|
C#
使用C# (.NET Core) 实现组合设计模式 (Composite Pattern)
本文的概念性内容来自深入浅出设计模式一书. 本文需结合上一篇文章(使用C# (.NET Core) 实现迭代器设计模式)一起看. 上一篇文章我们研究了多个菜单一起使用的问题. 需求变更 就当我们感觉我们的设计已经足够好的时候, 新的需求来了, 我们不仅要支持多种菜单, 还要支持菜单下可以拥有子菜单.
1513 0
|
Java C# 设计模式
使用C# (.NET Core) 实现迭代器设计模式 (Iterator Pattern)
本文的概念来自深入浅出设计模式一书 项目需求 有两个饭店合并了, 它们各自有自己的菜单. 饭店合并之后要保留这两份菜单. 这两个菜单是这样的: 菜单项MenuItem的代码是这样的: 最初我们是这样设计的, 这是第一份菜单: 这是第2份菜单: 同时有两个菜单存在的问题 问题就是多个菜单把事情变复杂了.
1089 0
|
C#
使用C# (.NET Core) 实现命令设计模式 (Command Pattern)
本文的概念内容来自深入浅出设计模式一书. 项目需求 有这样一个可编程的新型遥控器, 它有7个可编程插槽, 每个插槽可连接不同的家用电器设备. 每个插槽对应两个按钮: 开, 关(ON, OFF).
912 0
|
Java C#
使用C# (.NET Core) 实现单体设计模式 (Singleton Pattern)
本文的概念内容来自深入浅出设计模式一书 由于我在给公司做内培, 所以最近天天写设计模式的文章.... 单体模式 Singleton 单体模式的目标就是只创建一个实例. 实际中有很多种对象我们可能只需要它们的一个实例, 例如: 线程池,缓存, 弹出的对话框, 用于保存设置的类, 用于logging的类, 硬件设备驱动对象等等.
1281 0
|
C#
使用C# (.NET Core) 实现抽象工厂设计模式 (Abstract Pattern)
本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/p/8760250.html, 使用的是披萨店的例子. 文将继续使用这个例子, 这里要用到抽象工厂.
1408 0
|
C# 设计模式 .NET
使用C# (.NET Core) 实现简单工厂(Simple Factory) 和工厂方法设计模式 (Factory Method Pattern)
本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子.   前言 当你看见new这个关键字的时候, 就应该想到它是具体的实现. 这就是一个具体的类, 为了更灵活, 我们应该使用的是接口(interface).
1559 0
|
测试技术 API C#
[搬运]在C#使用.NET设计模式的新观点
原文地址:http://www.dotnetcurry.com/dotnet/1092/dotnet-design-patterns 软件开发有许多设计模式。其中一些模式非常受欢迎。说几乎所有的模式都可以被接受,而不管我们选择的编程语言如何。
1108 0