Administrator
发布于 2024-07-31 / 48 阅读
0
0

工厂模式

问题描述

大学生A每周都帮孤寡老人洗衣、扫地、买米买油。且不提及自己的名字,只说是学雷锋做好事。

大学生A毕业后,也依然会以“社区志愿者”的名义继续学雷锋做好事。而老人不需要是谁来做好事,只知道是学雷锋的人帮助就可以。

代码实现

创建抽象类LeiFeng

    public class LeiFeng
    {
        public void Sweep()
        {
            Console.WriteLine("Sweep");
        }
        public void Wash()
        {
            Console.WriteLine("Wash");
        }

        public void BuyRice()
        {
            Console.WriteLine("BuyRice");
        }
    }

创建学雷锋的大学生UnderGraduate、社区志愿者Volunteer

    public class UnderGraduate:LeiFeng
    {

    }

    public class Volunteer:LeiFeng
    {

    }

创建雷锋工厂类IFactory,再定义学雷锋的大学生工厂UnderGraduateFactory、社区志愿者工厂类VolunteerFactory

 public interface IFactory
 {
     LeiFeng CreateLeiFeng();
 }

 public class UnderGraduateFactory:IFactory
 {
     public LeiFeng CreateLeiFeng()
     {
         return new UnderGraduate();
     }
 }

 public class VolunteerFactory:IFactory
 {
     public LeiFeng CreateLeiFeng()
     {
         return new Volunteer();
     }
 }

客户端代码如下:

    class Program
    {
        static void Main(string[] args)
        {
            LeiFeng student = new UnderGraduateFactory().CreateLeiFeng();
            student.Wash();
            student.BuyRice();
            student.Sweep();

            LeiFeng volunteer = new VolunteerFactory().CreateLeiFeng(); 
            volunteer.Wash();
            volunteer.BuyRice();
            volunteer.Sweep();
        }
    }

结构组成

工厂方法模式由三个主要角色组成:

  1. 访问接口:这里例子为雷锋类

  2. 实体类:这里例子为做好事的类

  3. 工厂类:这里例子为具体工厂

UML图


评论