zoukankan      html  css  js  c++  java
  • 简单工厂模式

    下面我们举个例子:现在我们有个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();
    简单工厂模式其实是根据创建对象的不同去封装,简单工厂简明的说,就是到底要实例化谁,将我怎么实例化对象封装起来,达到封装,继承,多态的效果
  • 相关阅读:
    腾讯ios内部视频,什么垃圾视频
    项目中学习ReactiveCocoa的使用方法
    Mac 裁剪mp3
    AFN使用etag进行网络缓存
    Mac 高效 软件
    presentedViewController 和 presentingViewController 以及 dismissViewControllerAnimated 的使用
    Objective-C: NSFileManager 的使用
    UIButton的imageEdgeInsets 和 titleEdgeInsets
    Objective-C :Category
    Objective-C中的@property
  • 原文地址:https://www.cnblogs.com/JackWang/p/1762446.html
Copyright © 2011-2022 走看看