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

    工厂模式:实质是由一个工厂类根据传入的参数,动态决定创建哪一类产品,也就是创建哪一个类的实例,一个类代表一个产品

    工厂模式有如下3个角色:

    1.工厂:工厂类可以直接被外界调用,创建所需要的产品

    2.抽象:一般是具体产品的父类

    3.具体产品:工厂模式的创建目标,继承自抽象的子类

    C#经常使用反射来实现工厂模式,因为反射可以动态地创建类型的实例

    下面是一个简单工厂模式(使用反射)的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Factory
    {
        class Program
        {
            static void Main(string[] args)
            {
                //使用工厂方法创建实例
                Icar name1 = myfactory.getcar("Factory.fengtian");
                name1.makecar();
                Icar name2 = myfactory.getcar("Factory.Dazhong");//忽略了大小写“Dazhong”
                name2.makecar();
            }
        }
        public class myfactory//工厂:使用反射动态创建类型的实例
        {
            public static Icar getcar(string name)
            {
                Icar car = (Icar)Assembly.Load("Factory").CreateInstance(name, true);//Load表示加载程序集,CreateInstance表示查找指定的类型并创建实例,第一个参数表示指定的类型名,第二个参数表示忽略大小写
                return car;
             }
        }
        public interface Icar//抽象
        {
            void makecar();
        }
        public class fengtian : Icar//产品
        {
            public void makecar()
            {
                Console.WriteLine("已生产一辆丰田汽车!");
            }
        }
        public class dazhong : Icar//产品
        {
            public void makecar()
            {
                Console.WriteLine("已生产一辆大众汽车!");
            }
        }
    }
    简单工厂模式
  • 相关阅读:
    【JS】限制两个或多个单选框最多只能选择一个
    Markdown基本语法
    【thinkphp5】 分页样式修改
    Vscode 修改为中文语言
    【linux】Crontab 定时任务 使用实例
    【微信开发】 模板消息发送
    二维数组转化为字符串,中间用,隔开
    【golang】 go语言之环境搭建+ 第一个go语言程序
    【PHPstudy】安装Composer
    【LNMP】基于阿里云的https免费证书配置
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4430405.html
Copyright © 2011-2022 走看看