简单工厂模式
下面我们举个例子:现在我们有个A老师去上课。
可是这个时候A老师说我小孩突然生病了,我要去医院,但是这课总要有人去上的,不能让学生在那放鸭子啊,于是就跟B老师调或者C老师调课。从这可以看出, 不管是A,B,C三个老师,他们对我们来说都老师,不管谁给我们上课,对学生来说都是一样的,都能学习到知识,我们先建一个教师的基类:
  public  class Teacher
    {
        public virtual string TeachCourse()
        {
            return "Teacher";
        }
    }
在创建B老师,C老师,他们都继承老师的特性

    public class EnglishTeacher:Teacher
    {
        public override string TeachCourse()
        {
            return "English_Teacher";
        }
    }

    public class MathTeacher:Teacher
    {
        public override string TeachCourse()
        {
            return "Math_Teach";
        }
    }
现在的问题其实就是如何去实例化对象的问题,也就是说,到底要实例化谁,将来会不会增加实例化的对象这是很容易变化的地方,应该考虑用一个单独的类来做这 个创造实例的过程,这就是工厂,我们看看这个类如何编写:
 public class TeacherFactory
    {
        private Teacher _teacher;
       public static Teacher CreateTeacer(string teacherType)
       {
           switch (teacherType)
           {
               case "B":
                   _teacher = new EnglishTeacher();
                   break;
               case "C":
                   _teacher = new MathTeacher();
                   break;
               default:
                   _teacher = null;
                   break;
           }
           return _teacher;
       }
    }
现在只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了结果了:
 Teacher _teacher;
  _teacher = TeacherFactory.CreateTeacer("B");
  _teacher.TeachCourse();
简单工厂模式其实是根据创建对象的不同去封装,简单工厂简明的说,就是到底要实例化谁,将我怎么实例化对象封装起来,达到封装,继承,多态的效果
posted on 2010-06-22 10:13  Jack.Wang  阅读(221)  评论(0编辑  收藏  举报