摘要:
1、 请注意GoF《设计模式》的副标题是——可复用面向对象软件的基础。所以说设计模式并等于面向对象的设计模式,这是常被忽略的。而我们常说的设计模式往往是指面向对象的设计模式,所以应该先掌握好的是面向对象设计的基本思想和原则,而后才是模式。 2、 面向对象的原则和设计模式的目的是为了“应对变化,提高复用”。这一点也往往被忽略,对于基本上不需要变化的代码套用设计模式,是过度设计,无用功。所以在考虑... 阅读全文
摘要:
用户体验、逻辑结构、安全、性能 逻辑结构:可复用性、可扩展性、灵活性、松耦合性 前四点是我认为程序开发的四个目标、后四点是我认为程序结构设计的目标。 OO 设计原则我认为是实现上述目标的 参照原则, 而 设计模式则是为了实现目标、遵循原则的 具体战术。 废话: 为了重构数传软件,花力气学了一阵子设计模式,跃跃欲试。真正要重构了,竟有点不知如何下手,于是总结了前四点。 确定了重构的业务... 阅读全文
摘要:
1、 单一职责 一个类,只做好一件事,只有一个引起它变化的原因。 2、 开放封闭原则 软件实体应该是可扩展,而不可修改的。也就是对扩展开放、对修改封闭。 实现开放封闭的核心思想是对抽象编程,通过对抽象的继承和多态实现扩展。 拒绝滥用抽象,只将经常变化的部分进行抽象。 隔离变化,引入变化。 (数传软件)流程控制:状态模式、策略模式 3、 抽象倒置原则 依赖于抽象 高层模块不应该依赖于底层模... 阅读全文
摘要:
问题描述: .net环境下,运行程序,第一切换到中文输入法时,中文输入功能灰掉(智能ABC)或者红叉叉(微软拼音),必须通过键盘Ctrl+Space 切换一下,后续才恢复正常。 解决方案: 既然是必须再切一次Ctrl+Space才能解决,那么为何不再软件内先行切一下,于是就在登录窗口内的TextBox获取焦点时,通过模拟键盘类SendKey,模拟发送两次Ctrl+Space,这个问题就解决... 阅读全文
摘要:
解决办法:安装 netfx2.0 sp1。 解决过程: 第一阶段: 2006 年初次碰到这问题,上网查找,得到的是在控件加载时发现全角切换为半角的方案;应用,基本上能解决,但不可能把所有的都给堵住。 第二阶段: 2008年再次碰到这个问题,上网查找,基本上和第一阶段差不多的查询结果,只是多了个半角全角补丁,打上之后,未解决。 由于最近刚刚安装了vs2008 ,... 阅读全文
摘要:
关键词:迭代模式、foreach、迭代器、IEnumerable、IEnumerator、泛型 导言:这两天看迭代模式,一边学习,一边联系到.NET Framework的有关设计,小有收获,写下此文以供日后查看。这个关联学习的过程包括以下几个阶段: 学习迭代模式 à 想到了对应.NET中的foreach à 在深入了解foreach的时候碰到了泛型 à 然后回归到.NET集合内... 阅读全文
摘要:
老是记不住数字、字母的ASCII表值,每次使用都要查一查,总觉得有点不爽。今天看过《Windows程序设计》的下边一段话后,才发现,哎呀,ASCII表是经过巧妙设计的,自己没发现罢了。 “ASCII有许多优点。例如,26个字母代码是连续的;大写字母和小写字母可通过改变一位数据而相互转化;10个数字的代码可从数值本身方便地得到” 先看字母: ——要用二进制码和16进制码才能看出妙来 ... 阅读全文
摘要:
1、 VC中的long类型,在C#中重新声明时,映射为int型。 这是历史遗留问题,在PC还是16位时,VC中的long类型标识32位整型,当PC升级到32位后,long还是表示32位,而现如今C#中的long标识64位,所以需要注意这一点。 2、 在VC中的char*类型,在C#中重新声明时,映射为byte[]类型。 我看到char*的第一反应是,将其对应到C#的string类型,结... 阅读全文
摘要:
本周因为工作需要,针对“东进电话语音模拟卡”提供的API接口,写个测试程序,需要用C#调用VC封装的DLL动态库,上网查找,查来查去始终都是一个人的大作,不是很满意,自己查看MSDN帮助,动手总结一下,这是MSDN帮助的URL ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxinterop/html/eca7... 阅读全文
摘要:
Invoke 引起工作线程的阻塞,BeginInvoke 不引起工作线程的阻塞。 阅读全文