2013年12月3日

摘要: 定义:抽象(Abstraction)和实现(Implementation)分类,将实现作为抽象的一个私有属性进行桥接。例子:我想大家小时候都有用蜡笔画画的经历吧。红红绿绿的蜡笔一大盒,根据想象描绘出格式图样。而毛笔下的国画更是工笔写意,各展风采。而今天我们的故事从蜡笔与毛笔说起。设想要绘制一幅图画,蓝天、白云、绿树、小鸟,如果画面尺寸很大,那么用蜡笔绘制就会遇到点麻烦。毕竟细细的蜡笔要涂出一片蓝天,是有些麻烦。如果有可能,最好有套大号蜡笔,粗粗的蜡笔很快能涂抹完成。至于色彩吗,最好每种颜色来支粗的,除了蓝天还有绿地呢。这样,如果一套12种颜色的蜡笔,我们需要两套24支,同种颜色的一粗一细。呵呵 阅读全文
posted @ 2013-12-03 11:10 菜鸟的故事 阅读(221) 评论(0) 推荐(0) 编辑
 
摘要: 用意:将关联性不是很大的类进行关联,可以通过适配器进行关联例子:我们前面也介绍过日志记录的方法这是我们原来系统中有的方法,但是我们做到一半,需要引进一个新的日志记录法这个日志记录方法是WriteLog,与我们原来的Write方法有很大的差别,因此我们需要给他套个Wrapper,也就跟COM一样进行包装(RCM)包装方式有两种:继承和对象组合继承:继承是将每种日志记录方式都继承新的日志记录类,并实现了老的ILog接口,在接口Write方法中调用父类的WriteLog方法namespace 大话设计模式{ class DatabaseAdapter : DatabaseLog1, ILog... 阅读全文
posted @ 2013-12-03 10:15 菜鸟的故事 阅读(192) 评论(0) 推荐(0) 编辑
 

2013年12月2日

摘要: 通过拷贝创建新的对象ColorPrototype是颜色基类(抽象类),ConcteteColorPrototype是具体的父类,他包括两个方法Clone和DeepClone,那就介绍下Clone和DeepClone的区别Clone:又叫浅拷贝,MemberwiseClone(),这只能拷贝一层,如果某个属性是引用类型,无法进行真正的拷贝。DeepClone:是从对象表面到最底端,进行拷贝,是一种完全拷贝。namespace 大话设计模式{ [Serializable] public abstract class ColorPrototype { /// ... 阅读全文
posted @ 2013-12-02 16:25 菜鸟的故事 阅读(474) 评论(0) 推荐(0) 编辑
 

2013年11月28日

摘要: 定义抽象工厂是OOP的体现,抽象出行为(接口),面向接口编程现实汽车厂的冲压设备,冲压前车门,后车门只需要修改冲压设备的冲头(前车门冲压头,后车门冲压头),只需修改配置,调出对应的冲头例子AbstractFactory:抽象工厂类ISpeak:speak方法,说明是能说的对象Chinese:说中国话 public class AbstractFactory { /// /// 获取能说话的对象 /// /// public static ISpeak GetCanSpeakObject() {... 阅读全文
posted @ 2013-11-28 15:20 菜鸟的故事 阅读(214) 评论(0) 推荐(0) 编辑
 

2013年11月24日

摘要: 主要概念:注:以下概念是自我理解,不是很准确。IOC:Inversion of Control(控制反转)。本来对象创建是通过使用类内部进行创建,现在把对象创建交给container(容器)管理打个比方好比现在华数网络(container),你去华数网络营业厅注册服务(普通电视,高清电视,华数网络)... 阅读全文
posted @ 2013-11-24 21:43 菜鸟的故事 阅读(590) 评论(0) 推荐(0) 编辑
 

2013年11月21日

摘要: 语音播报实时天气一、 让文本变成声音 .Net里面自带了一个语音类库:System.Speech,调用系统的语音功能,就能实现string到语音的转换,很简单(记得先把电脑音量调大一下)://Add System.Speech reference first using System.Speech.Synthesis; var reader = new SpeechSynthesizer(); reader.SpeakAsync("I'm a programer. Hello, world! "); Hello, world! 你听到了……这里我用了SpeakAsy 阅读全文
posted @ 2013-11-21 22:08 菜鸟的故事 阅读(490) 评论(0) 推荐(0) 编辑
 

2013年11月18日

摘要: DbContext1.指定连接字符串(上一章提到) public string ConnectionStringName { get; private set; } /// /// 构造方法 /// /// 数据库连接字符串名称 protected EntityContext(string connectionStringName) : base(connectionStringName) { ConnectionStringName = connec... 阅读全文
posted @ 2013-11-18 13:37 菜鸟的故事 阅读(201) 评论(0) 推荐(0) 编辑
 

2013年11月17日

摘要: 单例模式Singleton单例:一个类在有且只有一个实例,并提供一个全局的访问点,私有化构造函数,提供一种机制来保证一个类只有一个实例。意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。四种实现方式:简单模式namespace 大话设计模式{ /// /// 简单实现单例 /// public sealed class SimpleSingleton { SimpleSingleton() { } public string Name { get; set; } private s... 阅读全文
posted @ 2013-11-17 22:33 菜鸟的故事 阅读(289) 评论(0) 推荐(0) 编辑
 

2013年10月27日

摘要: XSS跨站脚本攻击什么XSS攻击?在Web领域,有几个比较常见的安全隐患,其中一个比较流行的是跨站脚本攻击。通过加载一些恶意的脚本,actvie-x就是XSS的手段,通过这些手段,可以窃取cookie,更改用户设置,下载恶意软件,更改内容等等 示例:说明:当你提交含有脚本内容,服务器会拒绝请求如图只要在服务器方法中添加 [ValidateInput(false)]就可以跳过验证CSRF跨站请求伪造CSRF是跨站伪造请求,主要是针对目前验证只在登录时验证用户名密码,验证通过以后,服务器发送给用户一个令牌,浏览器将令牌保存在cookie中,每次请求在Http头中放入令牌信息,服务器就不去重新验证用 阅读全文
posted @ 2013-10-27 22:23 菜鸟的故事 阅读(175) 评论(0) 推荐(0) 编辑
 

2013年9月25日

摘要: 块状元素(block):总是另起一行开始高度,行高以及顶、底边距都可控制;行高可以设置文字内容的垂直位置若不设置大小,默认为父元素的100%我是h1我是h6,我宽100,高50内联元素(inline):和其它元素都在一行上高度,行高以及顶、底边距不可改变;行高只能改变占据的高度宽度就是它所容纳的文字或图片的宽度,不可改变我是一个span,常用内联元素,我的高度和行高,底边距都是无效的inline-block:它具有inline元素的在同一行,又具有块状元素可以设置宽高,顶底边距我是内联块状元素我是纯内联 阅读全文
posted @ 2013-09-25 21:47 菜鸟的故事 阅读(188) 评论(0) 推荐(0) 编辑