摘要:
一、概要在我的上一篇博客中,我们谈了谈分层,到底为什么分层(http://blog.csdn.net/shan9liang/article/details/6836300)这篇博客,准备用一个小Demo来介绍应该实现三层架构。三层架构只是分层的一种经典形式,到底分几层,要依具体情况而定,考虑到系统的复杂程度,和后期的可维护性,完全可以分四层,五层,甚至六层,七层。三层架构(3-tierapplication),通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想(《百度百科》)二、DEMO1、实现 阅读全文
摘要:
最近在网上看了很多关于架构的文章,比较流行的是三层架构。我也来凑个热闹,跟着扯一扯分层。我们从大处往小处说,先说,什么是架构?架构是一系列相关的抽象模式,用于指导大型软件系统各方面的设计。它描述一个软件系统从整体到部分的最高层次的抽象划分。直接认为架构就是系统草图也不为过。根据我们关注的角度不同,架构大概有三种:1、逻辑架构,主要描述软件系统中元件之间的关系,例如用户界面,数据库,业务逻辑元件等等2、物理架构,主要描述软件元件是如何安装到硬件上的。3、系统架构,主要描述系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。可以看到,系统架构师必须具备软件和硬件两方面的过硬能力,还得有 阅读全文
摘要:
一、概要 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式提供一种“封装机制”用来解决“多系列具体对象”的创建工作,降低客户端和“创建工作”的紧耦合度。二、生活中的例子 例如一个汽车工厂(抽象工厂),拥有四个下属汽车工厂(具体工厂),分别是生产轿车,越野车,客车,每个工厂都要有生产各自类型汽车配件的车间(方法)。 考虑到开闭原则,增加新车型工厂容易,增加新型配件不容易。图示:三、实现思路 当有多个抽象产品,且每个抽象产品都有多于一个的具体子类的时候,而抽象工厂角色又提供多个具体的工厂角色,分别对应多个具体的产品角 阅读全文
摘要:
欢迎技术交流。 QQ:138986722一 简单的线程方式周期执行 所谓线程式就是规定了和thread类似的timer类每隔一段时间(自己在配置文件中定义的时间)run方法就会被执行一次,所以他是一个单线程类首先需要了解的是他继承自java.util..TimerTask类,执行方法体为其复写的父类中的public void run()方法package cn.xy.util;
import java.util.TimerTask;
publicclass MyThreadtimer extends TimerTask{
@Override publicvoid run() { ... 阅读全文
摘要:
一、概要 工厂方法(FactoryMethod)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。二、生活中的例子 例如移动电信运营商,不同的话费套餐形式,如动感地带,神州行,全球通等。我们可以把抽象工厂(套餐工厂)做成一个接口,这个接口只有一个方法,就是创建抽象产品(计费类)的工厂方法。然后所有的要生产具体类(动感地带,神州行等)的工厂去实现这个接口,由具体的套餐工厂去创建具体的套餐类。于是我们再增加新的套餐的时候,就不需要更改原有的工厂类,只需要增加此功能的计费类和相应的工厂类就可以了。图示:三、实现思路 工厂方法模式是对简单工厂模式进行了抽象。有一个抽象的Fact 阅读全文
摘要:
一、索引器的基本概述 索引器定义类似于属性,但其功能与属性并不相同,可以看成是属性的增强版,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。1、索引器的定义定义的一般形式:[修饰符] 数据类型this[索引类型 index]{ get{//获得属性的代码} set{ //设置属性的代码}}修饰符包括public,protected,private,internal,new,virtual,sealed,override, abstract,extern.this关键字用于定义索引器。this表示操作本对象的数组或集合成员,可以简单把它理解成索引器的名字,因此索引器不能具有 阅读全文
摘要:
在C#中,委托(delegate)是一种引用类型,在其他语言中,与委托最接近的是函数指针,但委托不仅存储对方法入口点的引用,还存储对用于调用方法的对象实例的引用。简单的讲委托(delegate)是一种类型安全的函数指针. 仅仅看它的概念,可能还是很模糊,我们来举例子由浅入深地说明一下。(强烈提醒:注意代码中的一些关键注释。代码完全可以复制下来直接运行。) 需求:《收费系统》计费标准:会员1元/小时;临时用户:1.5元/小时。//我们先来看看不使用委托,该如何实现usingSystem; namespace不使用委托
{ class Program { ... 阅读全文
摘要:
一、概要 单例模式,提倡简约而不简单,透漏一种简捷美。它保证一个类仅有一个实例,并提供一个访问它的全局访问点。要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。二、生活中的例子 1、在中国,一个男人只能有一个合法妻子 2、世界上只能有一个中国 3、windows只能有一个任务管理器 等等三、实现思路 一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的... 阅读全文
摘要:
构造函数和析构函数 转载http://www.cnblogs.com/philzhou/archive/2010/08/10/CSharp_Constructor.html本节说明对象的创建、初始化和销毁过程。本节介绍下列主题: l 类构造函数l 结构构造函数l 析构函数类构造函数本节将讨论三种类构造函数:类构造函数的类型注释实例用于创建并初始化类的实例。私有在类之外不可访问的特殊类型实例构造函数。无法用私有构造函数来实例化类。静态在创建第一个实例或引用任何静态成员之前,将自动调用这种构造函数来初始化类。无法直接调用这种构造函数。备注(1) 实例构造函数创建新对象时将调用类构造函数,例如:Po 阅读全文
摘要:
一、重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法,而不能通过返回值。至于原因,可以这样理解,你调用一个方法,如果有多个方法同名,系统必须要知道到底你要调用哪一个,参数可以帮助系统在方法入口处得到答案,他根据你给的参数就知道该使用哪个方法。如果只有返回值的不同,很多情况系统是不可能得到有效的判断条件的,比如:double method();int method();如果你这样调用:method()。系统当然不知道该调用哪个。示例://返回值相同.. 阅读全文