发布时间:2012/10/25 来源:长沙做网站
软件设计模式成为做网站行业中对于商端产品必选的设计模式。asp.net成为目前做网站行业里选择最多最安全的开发语言。但是对于低级开发者而言,并没有研究好asp.net所涉及到的软件设计模式,只是简单的利用asp.net开发工具.net中所提供的控件进行简单的网站开发。为了让做网站中的业内人士多了解软件设计模式和asp.net所提供的更深层次的安全开发模式,长沙做网站先行者对同行提供一些软件设计模式所需要的知识。
在软件设计模式中,类与结构、抽象类与接口这些是必须会涉及到的,但是开发者常常对这些概念并没有了解深刻,此次长沙做网站技术人员详细说明接口、类、抽象类、结构四者之间的区别。
类与结构的区别:
关于类的示例代码:
public class ClassTest
{
int length;
int height;
public void Area()
{
}
}
关于结构的示例代码
public struct ClassTest
{
int length;
int height;
public void Area()
{
}
}
从上面的示例代码中可以看出,类和结构的声明非常相似,只是一个修饰符的不同,类的修饰符是class,而结构的修饰符是struct。既然定义类和结构从声明上相似,那么其具体的区别是什么呢?那又为什么要用这两种方式呢?
结构是值类型,值类型在堆栈上分配地址;类是引用类型,引用类型在堆上分配地址。堆栈的执行效率要比在堆上的执行效率要高,但是堆栈的资源有限,对于逻辑性比较复杂的对象就不太适合了。
结构不能继承;类可以继承。
在内部结构上,结构不能有protected修饰符,不能使用new,由于不能继续所以不能有abstract和seated。
类和结构的使用:
堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些。
结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
在表现抽象和多级别的对象层次时,类是最好的选择。
大多数情况下该类型只是一些数据时,结构时最佳的选择。
抽象类与接口的区别。
抽象类示例代码:
abstract class Area
{
abstract void AreaMethod();
}
接口的示例代码:
interface Area
{
void AreaMethod();
}
从声明上来看抽象类与接口的区别也是在修饰符上。具体的区别要在实际应用长期实战中才能理清思路。但是对于他们的使用可以参考以下几点:
1.如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
2.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。
3.如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
4.抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
有一个比喻来形容接口与抽象类:飞机与鸟都会飞因为它们继承了一个接口“飞”,但是战斗机属于飞机抽象类,猫头鹰属于鸟的抽头类。