逗B少年搞程序05 代理模式——名字都是后来补的,幸好没人看

    听说酒神又更新视频了,大五一的还让不让人学习了。诶,好像有什么不对。前天听了师哥们的讲座,除了Eclipse别的都没听过,后来一想,这讲的要是连我都听过,咱们也不会出门就挣一万多啊。

    就记得下午听老毕师哥讲的录数据,师哥说不把这么大的数据放到事务中处理,不然会发生出错就一条都进不去的情况。

    当时想了想,能不能做一个纠错的功能,就好像百度搜索的时候,打错了一个字母,比如输入的“Objact”,它会提示“您要找的是不是Object”。我们可以将可以约束的字段进行约束,并且这个约束可以在创建系统的时候由用户自己添加修改。

    比如,当录数据的时候需要录入学校,学院,专业,我们应该得到“廊坊师范学院,外国语学院,英语”,万一有的同学调皮,录信息的时候录入的是“廊坊吃饭学院,外国话学院,进口挖掘机修理系”(。。。)

    这个时候,我们在录入正确的数据之后,可以提示一下,把“廊坊吃饭学院”标记出来,系统提示“您是不是要输入廊坊师范学院”,外国语学院同样进行提示,修改过来之后,提示“外国语学院没有进口挖掘机修理专业,是否修改”如果选的否,再提示“是否创建进口挖掘机修理专业”。

    想想貌似有点复杂,概括的说就是,近似的提示修改,不存在的先提示修改再提示创建。好吧,我就听懂了一点,就提这么个小小的意见吧,也不知道会不会采用。

    之后还听了师傅说的先功能后智能,我倒是觉得做功能的时候设计一点点简单的智能吧,不过既然师傅说了,那先听着,反正我功能都实现不了就别谈智能了。

    好的,这次是学到了代理模式了,貌似有点慢了。

    代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。(From 百度百科)

    代理?中介?听起来不是很难理解嘛,客户端通过代理调用真正的实体中的方法。

    看了大神的解释,这个可以用在游戏中用来加载地图,瞬间我就来了兴趣,怪不得玩游戏的时候看起来很大的地图加载的速度还挺快的。由于大神的代码是Java的,那我给翻译成C#的,这样你们就不能说我是复制的代码。

    首先贴上大神博客http://blog.csdn.net/froser/article/details/23611465

    附上例子:在一个射击游戏中,前面有个房子,这个房子我们未必会进去。那么,在我们真正进入这个房子之前,这个房子内部是没有必要实例化的,我们只要通过它的外观判断出它是一个房子即可,房子内部的东西,等我们进去再生成来提升效率。

interface house         //房子的接口,又来存放创建房子的抽象方法
{
    public void Create();
}

class LargeHouse : house    //房子类,真正的实体
{
    public void Create()    //这里既简单写了。。。
    {
        Console.WriteLine("Building a LargeHouse");

        Console.WriteLine("Complete!");
    }
}

class LargeHouseProxy : house       //代理类,用代理类来调用LargeHouse的Create方法
{
    private LargeHouse lh;          //在代理类中定义一个被代理的实体

    public void Proxy()		    //实例化
    {
        lh=new LargeHouse();
    }

    public void Create()	    //这里就可以使用真正实体类中的方法了
    {
        lh.Create();
    }

}

    main过程太简单了,只要实例化一个代理类,之后就可以调用方法了。

    书上说的没太看懂,就看懂一个远程代理,可以提高加载速度,看来还需要在第二遍看书的时候仔细研究啊。

以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值