自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (1)
  • 收藏
  • 关注

原创 (34)C#设计模式——装饰者模式(Decorator Pattern)

引言在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜、挂件、外壳等。如果此时使用继承来实现的话,我们就需要定义无数的类,这样会导致“子类爆炸”的问题。为了解决这个问题,可以使用装饰者模式来动态地给一个对象添加额外的职责。装饰者模式的详细介绍定义装饰者模式以对客户透明的方式动态地给一个对象附加上更多的职责,装饰者模式相比生成子类可以更灵活地增加功能。具体实...

2018-08-31 16:05:03 341

原创 (33)C#设计模式—— 桥接模式(Bridge Pattern)

引言用一个电视遥控器的例子来引出桥接模式解决的问题。我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器作为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类。这样的实现使得每部不同型号的电视机都有自己的遥控器实现。这样的设计对于电视机的改变可以很好的应对,只需要添加一个派生类就好,但随着时间的推移,用户需要改变遥控器的功能,此时就需要修改...

2018-08-31 15:23:16 259

原创 (32)C#设计模式——适配器模式(Adapter Pattern)

引言在实际的开发过程中,由于应用环境的变化,我们需要的实现在新环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。如何在新环境中调用“现存的对象”呢?采用适配器模式可以解决。适配器模式使得新环境中不需要去重复实现已经存在了的实现,而很好的把现有的对象(指原来环境中的现有对象)加入到新环境中来使用。详细介绍定义:把一个类的接口变换成客户端所期待的另一种接口,从而使得原本接口不匹...

2018-08-30 17:10:29 1784

原创 (31)C#设计模式——原型模式(Prototype Parrern)

引言在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们使用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配多个一样的类实例对象。如果采用工厂模式来封装类创建这样的系统的话,随着产品类的不断增加,导致子类的数量不断增多,反而增加了系统复杂程度,所以使用工程模式来封装类创建过程并不合适,可以使用原型...

2018-08-28 17:09:55 666

原创 (30)C#设计模式——建造者模式(Builder Pattern)

引言在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤聚合而成。例如一个采购系统中,如果需要采购员去采购一批电脑,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU、主板、硬盘、显卡、机箱等组装而成的,如果此时让采购员一台一台电脑去组装的话真是要累死他了。这里就可以用建造者模式来解决这个问题。我们可以把电脑的各个组件的组装过过场封装到一个建造者对象里,此...

2018-08-28 16:08:20 284

原创 (29)C#设计模式——模板方法

当我们去银行存钱的时候,银行会给你一张存款单,这张存款单就是一个模板,把一些公共的内容提取出来,留下部分内容让用户来填写。在软件系统中,将多个类的共有内容提取到一个模板中的思想就是模板方法模式的思想。模板方法模式就是基于代码复用技术,在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法放在不同的子类中。在模板方法模式中,需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数形式实...

2018-08-28 14:42:36 270

原创 (28)C#设计模式——抽象工厂

概述抽象工厂模式的意图是为创建一组相关或相互依赖对象提供了一个接口,而且不需指定它们的具体类。抽象工厂可以向客户提供一个接口,使客户可以在不必指定产品具体类型的情况下,创建多个产品家族中的对象,它强调“系列对象”的变化。抽象工厂在开发中使用的频率很高。角色与结构抽象工厂:声明一个创建具体产品对象的操作接口(实际上是创建一个具体工厂的借口)具体工厂:实现创建具体产品对象的操作...

2018-08-28 14:16:47 259

原创 (27)C#设计模式——工厂方法

概述工厂方法模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法是简单工厂进一步的抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不在负责所有产品的创建,而是将具体创建工作交给子类来完成。这个核心类仅仅负责人给吃具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。...

2018-08-28 13:42:25 333 2

原创 (26)C#设计模式——简单工厂

定义简单工厂模式:定义一个Factoryl类,可以根据参数的不同返回不同类的实例,被创建的实例通常都有共同的父类。又称为静态工厂模式,Factory类为静态类或包含静态方法。实质上是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。参与者Product:抽象产品类,将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中。ConcreteProduct:具体产品类...

2018-08-25 15:49:51 388

原创 (25)C#设计模式——单例模式

什么是单例模式?从“单例”的字面意思上理解为:一个类只有一个实例。所以单例模式也就是保证一个类只有一个实例的一种实现方法。官方给出的定义:确保一个类只有一个实例,并提供一个全局访问点。单例模式的实现思路单例模式的实现代码很简单,也很容易看懂,但每次使用都会想为什们前人会这样实现单例模式呢?他们如何思考的呢?我们从单例模式的概念入手,可以把概念分为两部分:(1)确保一个类只有一个实例...

2018-08-25 14:25:20 381

原创 (24)C#异常处理——try-catch-finally的用法

 什么是异常?异常是指在程序运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。处理这种错误,叫异常处理。异常处理如何操作?C# 异常处理是建立在四个关键字之上的:try、catch、finally和throw。try:一个try块标识了一个将被激活的特定的异常的代码块。后跟一个后多个catch块。简单的说就是可能会出现错误的代码块要放在try中。 catch:程序通过异常...

2018-08-24 17:05:03 2544 1

原创 (23) C# 基础—— 接口、抽象方法、抽象类和虚方法

今天讨论的接口、抽象类、抽象方法和虚方法都是以多为为基础的。什么是多态?同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。举一个形象的例子,在我们听音乐会的时候,当指挥发出开始的信号,不同的乐器收到相同的信号,但是他们产生不同的行为:钢琴发出的是钢琴的声音,小号发出的是小号的声响。或者,如果把每个动物当成一个对象,那么他们都有一个方法叫做吃,但是他们却产生不同的行...

2018-08-24 15:30:45 503

原创 (22)C# 基础—— 面向对象之多态

多态概述什么是多态?同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。举一个形象的例子,在我们听音乐会的时候,当指挥发出开始的信号,不同的乐器收到相同的信号,但是他们产生不同的行为:钢琴发出的是钢琴的声音,小号发出的是小号的声响。或者,如果把每个动物当成一个对象,那么他们都有一个方法叫做吃,但是他们却产生不同的行为,猫吃鱼,狗吃骨头。多态的实现C#中,类的...

2018-08-23 15:54:59 222

原创 (21)C# 基础—— 面向对象之继承

继承概述继承是面向对象编程最重要的特性之一。任何类都可以从另外一个类继承,也就是说,这个类拥有它继承的类的所有成员。在面向对象编程中,被继承的类被称为父类或者基类,这个类被称为子类或者派生类。C#中提供了类的继承机制,单只支持单继承,不支持多继承,即在C#中一次值允许继承一个类,不能同时继承多个类。继承一个类时,类成员的可访问性很重要。派生类不能访问基类的私有成员,但是可以访问公共成员。所...

2018-08-23 15:41:20 256

原创 (19)C# 基础—— 关键字大全

.NET C# Web开发学习之路(19)—— 关键字大全值类型关键字 关键字 说明 关键字 说明 enum 用于声明枚举 struct 用于声明结构 char 声明System.Char结构的字符,表示Unicode字符 decimal 128位浮点类型,适合于财务和货币计算 float 32位浮点值的简单类型 ...

2018-08-23 14:37:29 1126 2

原创 (20)C# 基础 —— 面向对象之封装

.NET C# Web开发学习之路(19)—— 面向对象之封装封装概述面向对象编程中,大多数是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不是直接存取类中的数据,而是希望通过方法来存取数据,这样就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。此外,封装还可以解决数据存取的权限问题。可以使用封装将数据隐藏起来,形成一个封闭...

2018-08-23 14:11:13 271

原创 (18)C# 基础 —— 枚举类型(enum)

.NET C# Web开发学习之路(17)—— 枚举类型(enum)枚举类型(也称为枚举)提供了一种有效的方式来定义可能分配给变量的一组已命名整数常量。 例如,假设你需要定义一个变量,其值表示一周内的某一天。 该变量只会存储七个有意义的值。 若要定义这些值,可以使用枚举类型,该类型是使用 enum 关键字声明的。 enum Day { Sunday, Monday, Tuesday,...

2018-08-22 16:17:02 1095

原创 (17)C# 基础 —— 类(Class)

.NET C# Web开发学习之路(13)—— 类(Class)文章目录什么是类类修饰符构造函数析构函数什么是类?类是一种数据结构,可以包含数据成员(常量和域)、函数成员(方法、属性、事件、索引器、运算符、构造函数和析构函数)和嵌套类型等。类是对象在面向对象编程语言中的反映,是相同对象的集合。类描述了一系列在概念上有相同含义的对象,并为这些对对象统一定义了编程语言上的属相...

2018-08-22 14:54:51 3008

原创 (16)C# 基础 —— 结构(struct)

.NET C# Web开发学习之路(16)—— 结构(struct)文章目录结构概述结构的定义结构的使用结构概述所谓结构就是指由几个数据组成的数据结构,它与类共享几乎所有相同的语法,但比类受到的限制更多。结构是一种值类型,通常用来封装一组相关的变量。结构中可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等,但如果要同时包括上述几种成员,应该考虑使用类。...

2018-08-22 14:51:58 631

原创 (15)C# 基础 —— 方法

.NET C# Web开发学习之路(15)—— 方法文章目录方法概述方法修饰符方法声明方法分类重载方法方法概述方法是一种用于实现可以由对象或类执行的计算或操作的成员。类的方法主要是和类相关联的动作,它是类的外部界面,对于那些私有字段来说,外部界面实现对它们的操作一般只能通过方法来实现。方法是包含一些列语句的代码块,在C#中每个执行命令都是在方法的上下文中完成的。方法...

2018-08-22 14:29:50 224

原创 (14)C# 基础—— 字段和属性

.NET C# Web开发学习之路(13)—— 字段和属性字段字段是一种数据成员,其中容纳了一个值类型或者一个引用类型的引用。一般在类的内部做数据交互使用。字段就好比我们的个人所有财产,仅供个人使用,所以一般是private修饰。属性属性是一种用于访问对象或类的特性的成员。属性具有访问器,这些访问器指定它们在的值被读写时需要执行的语句,因此属性提供了一种机制,即把读取和写入...

2018-08-21 17:43:05 467

原创 (13)C# 基础—— 面向对象

.NET C# Web开发学习之路(13)—— 面向对象面向对象编程(OOP)是开发应用程序的一种新方法、新思想。过去面向过程编程常常回到石所有代码都包含在几个模块中,是程序难以阅读和维护,对软件做一些修改时常常牵一动百,是以后的开发和维护难以为继。而OOP技术使用许多代码模块,没个模块都只提供特定的功能,它们是彼此独立的,这样就提高了代码的重用率,更加有利于软件的开发、维护和升级。什么是...

2018-08-21 15:41:06 315

原创 (12)C# 基础—— Hashtable与Dictionary的区别

.NET C# Web开发学习之路(12)—— Hashtable与Dictionary的区别Dictionary在使用中是顺序存储的,而Hashtable由于使用的是哈希算法进行数据存储,是无序的。Dictionary的key和value是泛型存储,Hashtable的key和value都是objectDictionary是泛型存储,不需要进行类型转换,Hashtable由于使用ob...

2018-08-21 13:00:38 231

原创 (11)C# 基础—— Dictionary 字典

.NET C# Web开发学习之路(11)—— Dictionary 字典Dictionary概述必须包含命名空间System.Collection.GenericDictionary里面的每一个元素都是一个键值对(由两个元组组成:键和值).键必须是唯一的,而值不需要唯一的.键和值都可以是任意类型(例如:string,int,自定义类型,等等)通过一个键读取一个值的事件是接近...

2018-08-20 17:23:53 3112

原创 (10)C# 基础—— Hashtable(哈希表)

.NET C# Web开发学习之路(十)—— Hashtable(哈希表)Hashtable概述Hashtable通常称为哈希表,用于表示键/值对的集合,这些键/值对根据键的哈希代码进行组织,其没个元素都是一个存储于DictionaryEntry对象中的键/值对。键不能为空引用,但值可以。Hashtable的构造函数有多种,这里介绍两种最常用的。1、使用默认的初始容量、默认加载...

2018-08-20 16:38:17 3834

原创 (9)C# 基础——ArrayList集合

.NET C# Web开发学习之路(九)——ArrayList集合ArrayList类位于System.Collections命名空间下,它可以动态的添加和删除元素。ArrayList类型相当于一种高级的动态数组,是Array的升级版,但它不等同于数组。ArrayList功能:数组的容量是有限的,而ArrayList的容量可以根据需要自动扩充。ArrayList提供添加、删除和插入...

2018-08-20 15:14:12 664

原创 (8)C# 基础——排序算法

.NET C# Web开发学习之路(八)——排序算法冒泡排序 //冒泡排序 public void mpSort(int[] arr) { for (int i = 0; i < arr.Length - 1; i++) { for (int j = 0; j < arr.Length - 1 - i...

2018-08-20 13:56:38 482

原创 (7)C# 基础——数组

.NET C# Web开发学习之路(七)——数组数组中包含若干相同类型的变量,这些变量可以通过索引进行访问。数组中的额变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一的索引与其想对应,数组的索引从0开始。数组是通过指定数组的元素类型、数组的维度和数组每个维度的上限和下限来定义的,即一个数组的定义应该包含以下几点要素:元素类型数组的维度每个维数的...

2018-08-19 23:33:22 424

原创 (6)C# 基础——字符及字符串

.NET C# Web开发学习之路(六)——字符及字符串文章目录:字符操作字符串声明和初始化字符串操作StringBuilder类使用字符Char类在C#中表示一个Unicode字符,是这些Unicode字符组成了字符串。Unicode字符是目前计算机中通用的字符编码,为不同语言中的每个字符设定了统一的二进制编码,用于满足跨语言、跨平台的文本转换和处理要求。字符定义:...

2018-08-18 14:46:56 987

原创 (5)C# 基础——选择结构控制、循环

.NET C# Web开发学习之路(五)——选择结构控制、循环文章目录:if语句的使用if语句的嵌套使用switch语句的使用经典递归算法面试题while和do…whilefor和foreach跳转控制break、continue、goto、returnif语句的使用直接写一个例子来说明if的使用方法:创建一个控制台应用程序,Main函数代码如下: ...

2018-08-15 16:04:27 515

原创 (4)C# 基础 ——运算符的使用

.NET C# Web开发学习之路——运算符的使用运算符针对操作数进行,同时产生计算结果。运算符是一种专门用来处理数据运算的特殊符号,数据变量结构运算符形成完整的程序运算语句。1. 算术运算符“+”,“-”,“/”,“*”,“%”运算符都称为算数运算符,他们分别进行加、减、除、乘、取余运算。 //加法运算符 + int m1 = 927; ...

2018-08-13 17:05:25 1883

原创 (3)C# 基础——数据类型、类型转换、变量、常量

.NET C# Web开发学习之路——数据类型、类型转换、变量、常量本文根据以下内容来说明:数据类型数据类型转换声明并使用变量声明并使用常量1. 数据类型C#认可的基础数据类型并没有内置于C#语言中,二是内置于.NET Framework中。C#有15个预定义类型,其中13个是值类型,2个是引用类型(object和string)。1.1 值类型值类型直接存储数...

2018-08-13 11:32:59 935

原创 (2)C# 基础——C#特性

.NET C# Web开发学习之路——C#特性C#历史办版本及特性 语言版本 发布时间 .NET Framework要求 Visual版本 C# 1.0 2002.1 .NET Framework 1.0 Visual Studio .NET 2002 C# 1.1\1.2 2003.4 .NET Framework 1.1 V...

2018-08-10 15:13:30 740

原创 (1)C# 基础——.NET C#介绍

.Net C# Web开发学习之路——.NET C#介绍我在大学里面学的课程是以为C# Web开发为主,因为没有认真学习这门强大的开发语言,所以在此填坑!.NET 概述.NET是一个全新的跨语言开发平台,改进了Windows中应用程序的开发与部署。实现目标如下:提供一个一致的面向对象的编程 环境,无论代码是在本地只想还是发布在Internet上提供一个将软件部署和版本控制冲...

2018-08-10 14:50:50 1897

原创 .Net C# Web开发学习之路

.Net C# Web开发学习之路——下定决心!写给自己的话为了能够让你有效的学习,在里立贴为证:从今往后,每天学习完毕,必须将所学到的东西整理成博客,并发布到CSDN博客论坛,一次来提醒、监督自己学习。我是一个自制力很差的人,每天坐在电脑面前,总会想到各种娱乐性的东西上去,游戏、电视剧、电影等都是我YY的对象。之前也下过决心要好好的学习知识,但都只是在心里给自己模糊的定义一下,转过头将忘...

2018-08-09 17:34:15 15131 6

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除