2008年9月21日

刚刚从项目上面回来 没多久 感觉自己 好像最近比较颓废 总是玩Dota(不过这个还确实蛮好玩的),所以周日 下雨天 赶快补补课 把自己的心得体会 稍微的追变成代码了啊 这个 其实是我们正在做的例子,需求是客户的,但是代码是我

Model层

 

 1    public class Bill:InterFace.BillPass,InterFace.BillBack
 2    {
 3        public People Maker;
 4        public string Department;
 5        public Hashtable Right;
 6        public static Bill bill = new Bill();
 7        private Bill()
 8        {
 9            GetBillPeople();
10        }

11        public static Bill GetBill()
12        {
13            if (bill == null)
14            {
15                bill = new Bill();
16                return bill;
17            }

18            else
19            {
20                return bill;
21            }

22        }

23        public void GetBillPeople()
24        {
25            this.Maker = People.GetPeople("123""456");
26        }

27        BillBack 成员
34
35        BillPass 成员
43    }

这个是订单类,下面一个是人员类

 

 1  public class People
 2    {
 3        public string name;
 4        public int age;
 5        private string ID;
 6        private string password;
 7        public static People GetPeople(string ID,string password)
 8        {
 9            People Edison = new People();
10            Edison.age = 24;
11            Edison.ID = "12138";
12            Edison.name = "Edison";
13            Edison.password = "456";
14            return Edison;
15
16        }

17
18    }

这个现在是我这套系统中的两个模型,然后下面是两个接口 至于接口是做什么用的,我现在只能说是隔离行为的,我只理解到这里了啊,如果有高手愿意赐教的话可以留言。

 

接口层

当然这个是存在引用关系的我在这里就不废话了,大家应该都清楚吧.

然后调用的代码就是

 

客户端调用

 

本文是小弟在参加了 一个很大的项目开发之后,根据自己对设计模型的理解 以及客户需求的分析而作出的Demo,代码可能比较粗糙,但是为了体现一种思想。还望各位园友们不吝赐教,多提一些意见 我会陆陆续续的把一些其他的代码放出来 为的可能就是更好的理解抽象 更好的理解设计模式

posted @ 2008-09-21 20:20 Dr.Edison 阅读(1625) | 评论 (7)编辑

2008年8月19日

  郁闷 做软件最郁闷的事情就是负责给客户导入数据了 但是 我偏偏要从事此项工作 但是客户的数据 经过我们处理终究是可以 导入数据库的 但是在行转列的问题上我遇到一个难题 ,请教各位高手,一般的行转列 都是用sum 聚合函数 但是我要聚合的是nvarchar 这样个.... 太郁闷了 谁能帮帮我啊~~

posted @ 2008-08-19 20:45 Dr.Edison 阅读(74) | 评论 (0)编辑

2008年8月2日

 刚刚在看你的设计模型,感觉挺舒服。但是看着看着 总觉得不那么有用。应该说是例子不那么有用,虽然文章中也提到了一些场景 但是真正应用到企业级开发的时候会用到多少。我们有必要为没有可能扩展来浪费成本吗??这是我脑海中的问号,因为我是做企业级应用的没有那么高端,但是设计模型确实会让我的代码优雅许多,但是我Boss 会喜欢吗?? 会让我为这些 有可能的扩展(只能说是有可能的)来对系统进行设计吗?? 我不得而知,心中有点疑惑 希望各位能给出答案,更希望Terry能亲自解答啊。

posted @ 2008-08-02 14:35 Dr.Edison 阅读(179) | 评论 (6)编辑

2008年7月30日

今天温习Webcast讲的工厂模式,自己也比较有感觉,写了一些东西 但是写着写着出事了!~

大家还是先看代码吧

这是接口

    interface InterCar
    
{
     
void Run();
      
void Turn();
    }

 


   abstract  class People
    
{
        
public int age getset; }
        
public string name getset; }
        
public Car mycar getset; }
    }

   
class trucker: People,InterCar
   
{

       
public trucker(Car mycar)
       

           
this.mycar=mycar;
       }


       
InterCar 成员
   }

这是我的类

Code

 

这是工厂方法

但是我在调用的时候会出现如下错误啊

   People people = PeopleFactory.CreatePeople(pname,mycar);

 抽象类People并不认识Interface InterCar,更不用说实现类中的两个方法了。

 

people.Run();
people.Turn();

不置可否帮助我解答一下。我有了答案也后会贴出来的。

 

posted @ 2008-07-30 16:20 Dr.Edison 阅读(110) | 评论 (1)编辑

今天听了webcast的C#设计模型 感觉更好了,因为之前看过《小菜与大鸟不得不说的事》今天温习一下感觉装饰者模式真的很爽啊好了 废话少说 放代码

Code

 

此为抽象类,是抽象的哦。

   class T50:Tank
    {
        
public override void Shot()
        {
            Console.WriteLine(
"我是T50坦克");
        }

        
public override void Run()
        {
            Console.WriteLine(
"我可走正常的路");
        }
    }

 

一个实体类继承自抽象

下面轮到我们的主角装饰者类上场了

    class JiaNongPo:Tank
    
{
        
private Tank tank;
        
public JiaNongPo(Tank tank)
        
{
            
this.tank = tank;
        }

        
public override void Shot()
        
{
            Console.WriteLine(
"装备加农炮");
        }

        
public override void Run()
        
{
            tank.Run();
        }

    }

    
class Papo : Tank
    
{
        
private Tank tank;
        
public Papo(Tank tank)
        
{
            
this.tank = tank;
        }

        
public override void Run()
        
{
            Console.WriteLine(
"装备爬坡器!");
        }

        
public override void Shot()
        
{
            tank.Shot();
        }


    }

这是我们的装饰者类,之前用过另外一个抽象装饰者类来继承Tank类 后来发现状态保存比较麻烦,所以不用了 直接用

具体的装饰者来继承但是一个缺点就是当Tank类中的方法较多的时候会要求全部重载 Tank类的方法比较麻烦啊,不知各位有什么好的解决办法。好了天不早了 我要休息了啊 努力中....

posted @ 2008-07-30 00:02 Dr.Edison 阅读(102) | 评论 (6)编辑

2008年7月26日

刚刚听完Webcast的ADO.NET的线程池的使用,有点小感觉,放出来让大家评论一下.首先要感谢在上一篇博客中看我发牢骚的各位大哥.真心的感谢 不论是骂我的 鼓励我的.真心感谢.好了 关于ADO.NET的线程池我个人认为说白一点就是一种对数据库的链接方式.在中间加入了一个Pool,用来装载线程.使得想成可以服用,另外可以减轻数据库服务器负担,高效的使用数据库连接,负责当我们在开发企业应用时,并不是每一个客户端都需要时时刻刻与服务器保持通信,你不可能为每一个客户端去服务器上面建立一个Connection,浪费服务器资源.虽然现在硬件便宜了,可我还是对这种行为不齿(MS那个高手这样说过?),就可以通过建议连接池的方式来建立几个Connection 来供客户端使用,大大减轻服务器负担.使代码更优化.(至于代码,大家可以去现在Webcast自己来看一下 我这里就不班门弄斧了,顺便说一句在学习这个东西之前各位ms已经在使用线程池了)

posted @ 2008-07-26 16:19 Dr.Edison 阅读(73) | 评论 (2)编辑

编程一年了 可工资还是上不去,眼看着公司的本科的同仁跳槽,涨薪水可自己就是没有勇气。因为我是专科生,郁闷。不知道自己的出路在哪,可能以后会有架构师这种东西,可是那些东西是属于高学历的人的,同等的技术水平,一个大专生,一个本科生你会任用哪个做你的项目经理,或者架构师呢??答案 各位心中比我清楚。但是 我们正样的人不能够寻求出路吗??我觉得未必,这些天一直在看 考研的事宜,想要一个更高的学历,如果有高一点的学历,Google,微软的公司我也敢去面试,但是没有的话...只能在小公司 孤独终老啊  郁闷 心情十分郁闷啊,高手们出点主意 帮帮小弟吧~~

posted @ 2008-07-26 10:00 Dr.Edison 阅读(284) | 评论 (9)编辑

2008年7月20日

刚才对面向接口充满了疑惑 经过自己的仔细推敲 加上 Vs 的智能提示 终于找到解决方法了 放代码出来啊 如果你刚看过那篇 你应该很清楚了啊

 

 class Program
    
{
        
static void Main(string[] args)
        
{
            Computeruse com 
= new Computeruse();
            Adult me 
= new Adult();
            me.UseComputer(com);
            Child mybrother 
= new Child();
            mybrother.UseComputer(com);
            Console.ReadLine();
        }

    }

    
class Computeruse : IFinal
    
{
        
public Computeruse()
        
{
            Console.WriteLine(
"这个电脑我在用 别管我干嘛!!");
        }

        
IFinal 成员
    }

    
interface IFinal
    
{
        
void ToLearn();
        
void ToWork();
        
void ToFun();
    }

    
interface IComputerLearn:IFinal
    
{
        
void ToLearn();
    }

    
interface IComputerWork:IFinal
    
{
        
void ToWork();
    }

    
interface IComputerToFun:IFinal
    
{
        
void ToFun();
    }

    
class Adult
    
{
      
public void UseComputer(IFinal IFinal)
      
{
          IFinal.ToLearn();
          IFinal.ToFun();
      }

    }

      
class Child