随笔分类 -  其它 / 面向对象

摘要:主要使用了一个委托的方式 ,函数式接口,将需要处理的业务逻辑以参数的方式传到方法里,而批量处理的方法代码比较固定,所以进行了抽象。 /** * 数据处理辅助类. */ public class DataHelper { static Logger logger = LoggerFactory.get 阅读全文
posted @ 2021-04-29 10:47 张占岭 阅读(215) 评论(0) 推荐(0) 编辑
摘要:返回目录 解放思想与面向对象两个东西有什么联系,怎么把它们放在一起去说了呢,呵呵,解放思想实事上是指将我们的习惯性思维进行改变,使用另一种方式来有效的解决一个问题,而这种解决问题的方法往往是通过面向对象的特性去实现的。 今天要说的是“站点地图也要面向对象“,我们通过在做站点地图时,都是直接写死在页面 阅读全文
posted @ 2013-03-11 16:59 张占岭 阅读(881) 评论(0) 推荐(3) 编辑
摘要:在分层架构中,查询操作是很常见的,我们有时总是希望把它写得健壮一些,有时总希望重复代码少一些,可能有时也希望它可以美丽一些,呵呵!在这个系列中,我将为大家解说一下分层架构里的条件过滤,如何去设计它,WEB,BLL,DATA层都干什么事,怎么样使程序更加灵活,更加合理些。目录:一 每个层对于“条件过滤”的职责二 Lambda表达式对于查询语句简化了不少,牺牲的性能可以接受三 将所有过滤条件放到字典里,最后统一过滤四 为Iqueryable结果集添加扩展方法,并添加排序功能五 模块完整代码一 每个层对于“条件过滤”的职责WEB UI 层:整理查询的对象,并进行初始化工作,组织Predi... 阅读全文
posted @ 2012-10-08 17:10 张占岭 阅读(882) 评论(0) 推荐(3) 编辑
摘要:基类中的修饰符,其实就是C#里的那几种修饰符,public ,proteced,internal,privat这四种基础类型,当然也还一个组合类型internal protected,它们都是C#里最基础的东西,今天觉得有必要再说一下。我还是觉得单讲修饰符,除了不好理解外,还有就是没什么意义,我们一定要把代码放到项目中才有它的价值,不是吗,呵呵。一 public ,希望在所有地方都使用的成员,如一个获得结果集的方法1 public virtual IQueryable<TEntity> GetEntities<TEntity>() where TEntity : cla 阅读全文
posted @ 2012-08-14 23:22 张占岭 阅读(731) 评论(1) 推荐(6) 编辑
摘要:今天主要说一下基类中的方法和属性,既然把这东西放进了基类,那有一点可以肯定的是,它们是公用的,这种公用的实现可能由基类自己实现,也可能是子类去实现,对于这句话,会有三种情况:(以方法以例)1 基类中的方法,对于所有子类都是一样的,并且子类不能修改这个方法,这时,我们的方法这样定义1 protected void CannotModifyMethod()2 {3 ...4 }2 基类中的方法,对于所有子类都是一样的,但子类可能根据自己的逻辑,去实现自己那块业务,这时,我们的方法这样定义1 protected virtual void OverrideMethod()2 {3 ...4 }... 阅读全文
posted @ 2012-08-10 16:37 张占岭 阅读(693) 评论(1) 推荐(2) 编辑
摘要:C#允许一个类不去手动声明一个构造方法,因为.net内部为我们继承了它,它为自己为我们生成一个无参的架造方法,本文中我们讲的架造方法都属于实例构造方法,下面我们来说明几个问题:1 构造方法在何时执行2 基类的构造方法应该去子类考虑的多一些首先我们来说一下第一个问题,构造方法的执行时期,当类对象被new时,它会首先执行符合它(类)方法签名的构造方法,如这个语句Person person=new Person();这是我们经常看到的建立对象的语句,它事实上是去执行Person类型的public Person()这个方法的,当然,如果语句变成了Person person=new Person(&qu 阅读全文
posted @ 2012-08-04 23:44 张占岭 阅读(599) 评论(0) 推荐(0) 编辑
摘要:基类,即基础类型,也称为父类,祖宗类等,它一般会以抽象类(abstract class)的形式体现出来,它会包括一些具有共性的,一般性的信息(属性和方法等),它在描述一类对象时,经常会被抽象出来,如一个小猫,一只小狗,很容易会让你抽象出一个animal来,这是正常的,是符合面向对象人生观的,呵呵。 而在实际项目开发中,这种例子也不少,可以说到处都可以看到基类的身影,有人说,请不要使用继承,因为它为使你的程序很糟糕,依赖太多不好,但我要说的是,如果你的程序是一个关系复杂,面向对象的,那你的程序在某些地方必须要去继承(抽象出基类),有时,我们会说,那什么时候去使用基类,我们应该如何去衡量呢?事实. 阅读全文
posted @ 2012-08-03 23:18 张占岭 阅读(1104) 评论(4) 推荐(2) 编辑
摘要:很多朋友与我一起开发项目时,总是问我,“你为什么要把linq to sql的DataContext对象抽象出一个基类来”,我觉得Linq自己实现的很好了,你抽象出一个基类完全是多于的,多此一举!事实上,我很喜欢听到这样的声音,因为它是我不断向前的动力,也是我对知识能更深一层理解的动力,在此,感谢那些与我唱反调的朋友们,呵呵!以下是我对“为什么我要将数据库上下文进行抽象,为它生产一个基类有用吗”这个话题做的一个解答,本系列目录如下:第一回 要想知道为什么抽象出基类,应该先对基类有一个比较明确的认识第二回 基类的架造方法应该为子类想的多一些第三回 基类中的方法,应该根据实际情况,虚的虚,抽... 阅读全文
posted @ 2012-08-02 23:54 张占岭 阅读(806) 评论(2) 推荐(2) 编辑
摘要:解耦,不仅只是对程序的扩展性而言,它可能还是你使用你的程序从一个层面向另一个层面提高的基础,请认真对待这个词语“解耦”。我相信,它将会成为与“SOA”,“分布式”,“云计算”,“KV存储”,“高并发”一样的热门的东西,我确信这点。以后,我将会继续关注这个词语“解耦”。今天主要是讲”代码之美“的一个话题,利用构造方法使你的对象进行一个可供注入的接口,这就是IOC里面注入的一种方式,即”构造器注入“。 1 /// <summary> 2 /// 统一实体 3 /// </summary> 4 public class EntityBase 5 { 6 7 ... 阅读全文
posted @ 2012-07-09 16:21 张占岭 阅读(2489) 评论(0) 推荐(1) 编辑
摘要:一直在看“代码之丑”这个文章系列,心想,为得不来个“代码之美”呢,呵呵,今天做项目时,认为我的验证方法代码逻辑比较漂亮,所以就摘出来分享一下吧,今天讲的是方法的重载,事实上主要是说一下构造方法的重载。构造方法不同于其它方法,它没有返回值,可以有参数列表,可以是public,private,protected,internal等去修饰它,可以是加了static的类型构造方法,也可以是一个实例构造方法,可以自己去重载自己的构造方法可以去重载基类的构造方法美1:重载自己 /// <summary> /// 代参数的 /// </summary> ... 阅读全文
posted @ 2012-07-06 17:13 张占岭 阅读(978) 评论(1) 推荐(2) 编辑
摘要:在使用Stream对象,transactionScop,socket对象时,我们往往会发现在它的内部有一个Dispose()方法,它是干什么用的呢?这要从微软的代码托管开始说起,所谓托管,就是不需要程序员自己去干涉内部分配与销毁,从对象的建立到销毁的过程完全由.net来帮我们去实现。.net为提供的类库有两种,即“托管类库”和“非托管类库”,像自定义的类,值类型等,它一般来说,执行的结果可以预知,这时.net帮助我们去管理对象;而如果你要实现,网络上的传递,文件的传递,向服务器发包这些操作,都是系统未知的,即不知道什么时候能执行结束,这时,它们的对象释放,则需要自己去实现,例如:1 using 阅读全文
posted @ 2012-06-25 23:31 张占岭 阅读(1925) 评论(5) 推荐(0) 编辑
摘要:返回目录在简单工厂的讲解中,出现了很多问题,我们对象统一行为抽象出一个接口(或者抽象类)之后,再根据你传入的类型进行创建实例,这只适合于你有固定行为的场合,当你要实现接口的类型处于不定数时,则不适合使用简单工厂模式,而应该用工厂方法了。适用场合:子类有统一的操作行为子类的数量不固定,随时可能有新的功... 阅读全文
posted @ 2012-06-25 17:01 张占岭 阅读(2357) 评论(5) 推荐(5) 编辑
摘要:返回目录 简单工厂模式Simple Factory根据提供给它的数据,返回一个类的实例。通常它返回的类都有一个公共的父类(或者接口对象)。简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工... 阅读全文
posted @ 2012-06-24 14:38 张占岭 阅读(7526) 评论(7) 推荐(1) 编辑
摘要:返回目录单件模式(Singleton)要求一个类有且仅有一个实例,并且提供了一个全局的访问点。从概念上来研究一下它的实现,不考虑线程安全 1 public sealed class Singlton 2 { 3 static Singlton instance = null; 4 p... 阅读全文
posted @ 2012-06-24 13:35 张占岭 阅读(4825) 评论(6) 推荐(6) 编辑
摘要:在我上一篇文章发表后,收到了很多博友的回复,其中有一位博友提了一个问题,TestBase 继承了ITest是多余的,我认为,我有必要再写一篇文章来说明一下,TestBase为什么要继承ITest,当然各位也可以再次发表自己的看法。 1 /// <summary> 2 /// 数据统一接口规范 3 /// </summary> 4 interface ITest 5 { 6 /// <summary> 7 /// 插入方法 8 /// </summary> 9 void Insert();10... 阅读全文
posted @ 2012-06-21 17:04 张占岭 阅读(2066) 评论(8) 推荐(3) 编辑
摘要:这个问题困扰了我很久,很觉得设计的不完善,终于在今天把它彻底解决了,其实就是一个C#里的基础知识问题,主要涉及到了,接口,抽象类,接口继承,类继承,多态等知识。事件是这样的,我有一个统一接口规范的接口,它可以由linq to sql,ado.net和ef等相关数据源去实现(只是举个例,不是实际中的代码) 1 /// <summary> 2 /// 数据统一接口规范 3 /// </summary> 4 interface ITest 5 { 6 /// <summary> 7 /// 插入方法 8 /// ... 阅读全文
posted @ 2012-06-20 14:58 张占岭 阅读(3281) 评论(23) 推荐(8) 编辑
摘要:回到占占推荐博客索引 本系列文章主要是我在工作中,遇到一些不能主观判断的问题,最后在电脑上去证明我的理解是否正确,这也是题目“将不确定变成确定”的由来。 记得我在上大学时,老师说过一句话:“机器最能证明一切”,这句话现在看来,确实很经典。 将不确定变为确定系列~目录(“机器最能证明一切”) 第一回  阅读全文
posted @ 2012-06-15 23:27 张占岭 阅读(2865) 评论(11) 推荐(6) 编辑
摘要:之所以写这一篇,是因为前一篇面向服务架构~全局配置文件也面向服务了提到了性能问题,所以在这一篇文章里,主要围绕着性能来对ConfigCache这个程序集进行重构。要重构的点:1 实例创建过多,引起不必要的性能消耗2 将配置信息从文件读到内存时,然后在读内容时,去比较最后修改时间与内存中存储的时间是否... 阅读全文
posted @ 2012-06-13 23:55 张占岭 阅读(2083) 评论(3) 推荐(5) 编辑
摘要:回到目录我之前写一篇关于事件订阅的文章(事件的好处~实现对修改的封闭,对扩展的开放!~续),但它主要是订阅静态事件,而今天主要讲的是实例事件,即,当一个事件发布者被实例化后,去订阅它里面的事件,然后当这个事件发布者去触发该事件时,自己执行你订阅的内容,这没什么可说的,一切都很正常。但在B/s系统中,常常都有这样一种需求,即:Order类中有方法GeneratorOrder,即生成订单的方法,这个方法会被UI层的很多方法调用,以实现对不同业务产品的购买,如:购买家电产品,购买成功后应该去和家电有关的成功页;而购买日常用品,成功后应该去与日常用户相关的页面;以后还会有其它业务产品的成功页,需要我们 阅读全文
posted @ 2012-06-12 23:20 张占岭 阅读(2928) 评论(8) 推荐(8) 编辑
摘要:回到占占推荐博客索引我写过的系列文章也不少了,不过“不忘本”这个系列与其它系列不同,它自己并不成章节,每讲与其它讲都没有内在联系,它是我在实际工作中遇到的问题的一个总结,觉得有时,基础知识确实很重要。在这个系列会主要涉及到以下几点:构造函数的使用及原理抽象类主要用在什么地方,为什么微软的托管代码中有很多abstract接口是用来做什么的,是不是应该为每个操作都去定义一个接口,如何利用接口来实现面向对象的多态性枚举类型有什么特点,它在实现开发中怎么使用,为什么可以和值类型直接进行转化结构类型与类有什么区别,难道真正的开发中我们就不用它吗委托与事件的关系,怎么去理解它们简单的谈一个浅拷贝和深拷贝的 阅读全文
posted @ 2012-06-09 23:35 张占岭 阅读(2156) 评论(2) 推荐(2) 编辑