浅谈观察者模式(发布-订阅模式)的应用

面向对象编程是对现实世界的抽象,是通过代码构件一个虚拟世界。在虚拟世界中有人、有物,也有很多关系到“人”和“物”之间的事情和业务。以下我通过一个现实世界中的简单案例,来介绍面向对象编程的一种设计模式——观察者模式,也经常被称为“发布-订阅模式”。现实中的事情经常具有复杂性和相关性,即一件事情发生过后往往引发其他相关联的事情。以网购下单为例:我们在网上商城点击按钮支付订单之后,商城系统的后端会同步通知仓库管理员打包物品发货、记录买家用户的消费日志、给买家用户发送短信提醒等一系列操作。这个看似简单的功能,可以拆分成为4个不同...


阅读正文

浅谈组合模式的应用

“面向对象编程”是对现实世界的抽象,是通过代码构建出一个虚拟的世界。 如下图所示,这是一个歌唱比赛节目的游戏规则示例(为便于举例,采用了大家耳熟能详的歌手名称,不代表歌手的演艺实力),如何在虚拟世界中通过代码实现这样的游戏规则呢? 上图表述了游戏的三个阶段: 1. 16进8淘汰赛:由16名参赛者一一对决,票数优先者晋级下一轮比赛,票数落后者被淘汰。 2. 8进4晋级赛:由8名参赛者一一对决,票数优先者晋级到本赛区决赛。 3. 赛区争夺战:由前两个阶段产生出本赛区冠亚军共2名,组成赛区战队,与另一赛区战队对决。对...


阅读正文

浅谈策略模式的应用

“面向对象编程”是对现实世界的抽象,是通过代码构建出一个虚拟的世界。在虚拟世界中有人、有物,这些人和物都被称为“对象”。虚拟世界中的对象与现实世界中的一样,人有姓名、性别、年龄等一系列属性,也有吃饭、如厕、睡眠等一系列行为。 以下我通过一些真实世界中的事例,来介绍如何使用面向对象的思想来构建一个虚拟世界中的行为,并且通过“策略模式”来实现这一行为。 如上图所示,这是我们在现实世界中经常发生的行为,男士入男厕、女士入女厕。那么我们在“面向对象”的虚拟世界中如何实现这一行为呢? 首先通过代码建立“洗手间”和“人”这两个“类...


阅读正文

使用VS自带的WSDL工具生成WebService代理类

.net调用WebService的方法,除了在VS里面右键添加引用之外,还可以通过VS自带的WSDL工具生成WebService代理类,通过代理类来调用WebService,方法如下:打开VS开发命令工具在VS开发命令工具中输入命令,语法如下:wsdl /language:C# /n:MyNamespace /out:D:/TestWebService.cs http://www.bigmiao.com/webservice/test?wsdl参数说明:/language:C# 生成的代理类语言为C#/n:MyNamespace 生成的代理类命名空间为MyNamespace/out:D:/TestWebService.cs 生成的代理类保存目录输入命令按回车后,执行成功提示如下:至此生成WebService代理类成功,可在对...


阅读正文

使用System.Attribute特性类扩展枚举(enum)

众所周知,我们在使用枚举时,可以很轻松的获取枚举的名称和值:public enum EnumOrderStatus { 待制作 = 1, 制作中 = 2, 待发货 = 3, 待收货确认 = 4, 确认收货 = 5, 交易完成 = 6, 交易关闭 = 0 } var needProduce = EnumOrderStatus.待制作; var name = needProduce.ToString(); //获取枚举的名称:name = "待制作" var value = (int)needProduce;//获取枚举的值:value = 1;枚举的常用方法如上。在某项目中遇到业务场景如下:订单表中用一个OrderStatus记录了订单状态的枚举名称,需要在页...


阅读正文

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\文件不...

很久没有写博了。最近半年除了忙活布置新家和过年期间走亲访友之外,都是在公司处理一些项目中的杂事;连家里买的很多书都停下来没看了,感觉这段时间在事业和学习上一直都是忙忙碌碌,却又碌碌无为。吐槽完,说正事:asp.net网站在服务器端运行时,会在C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\目录中生成编译文件,像这样的:想了解Temporary ASP.NET Files目录生成原理的可出门右转上百度查询,此篇博文要说的是:当Temporary ASP.NET Files目录生成文件太多,导致C盘爆满时,我们可以如何处理?方法一:把Temporar...


阅读正文

解决发布Web应用时报错:指定的路径或文件名太长,或者两者都太长。完全限定文件名必须少...

1.在VS中发布Web应用,进行发布相关的设置后,在发布过程中出现如下截图的错误信息2.查看错误输出信息后发现,在发布过程中,VS会在系统临时目录中创建文件进行预编译,并将预编译后的文件存储于另一个目录。猜测可能是目录名的问题3.在发布的网站根目录中找到*.publishproj文件,在<PropertyGroup>节点内添加<IntermediateOutputPath>..\Temp</IntermediateOutputPath>,将可以设置发布过程中的临时文件存放目录,这里设置的..\Temp将会在项目目录中自动创建一个Temp文件夹,如下图所示是在发布过程中Temp文件夹下自动创建的文件...


阅读正文

URL地址太长,“请求筛选模块被配置为拒绝包含的查询字符串过长的请求”错误处理办法

当页面地址的URL参数太长,网页会报出以下错误: 根据报错页面的提醒,我们可以通过修改web.config解决URL参数过长的问题,在web.config的<system.webServer>中修改以下节点(如果没有节点则添加): <security> <requestFiltering> <requestLimits maxQueryString="40000"></requestLimits> </requestFiltering> </security> maxQueryString默认值是2018,此处将数值改大一点即可!


阅读正文