首页 > 其他分享 >02.简单工厂

02.简单工厂

时间:2023-05-31 13:00:48浏览次数:34  
标签:02 创建 IApi 工厂 api 简单 public

定义

提供一个创建对象实例的功能,而无需关心具体实现。创建实例的类型可以是接口、抽象类,也可以是具体的类。

代码示例

/// <summary>
/// 工厂类,用来创建api对象
/// </summary>
public class Factory
{
    public static IApi CreateApi(int condition)
    {
        IApi api = null;
        if(condition==1)
            api=new Api1();
        else if(condition==2)
            api=new Api2();
        return api;
    }
}

public interface IApi
{
    void Operation(string s);
}

public class Api1 : IApi
{
    public void Operation(string s)
    {
        Console.WriteLine(s);
    }
}

public class Api2 : IApi
{
    public void Operation(string s)
    {
        Console.WriteLine(s);
    }
}

创建一个简单工厂对象,让简单工厂来负责创建接口对象。 然后让客户端通过工厂来获取 接口对象, 而不再由客户端自己去创建接口的对象了。

静态工厂

使用简单工厂的时候,通常不用创建简单工厂类的类实例,没有创建实例的必要。因此可以把简单工厂类实现成一个工具类,直接使用静态方法就可以了。也就是说简单工厂的方法通常是静态的,所以也被称为静态工厂。

可配置的简单工厂

在简单工厂的防范里面可以使用反射,当然也可以使用IoC/DI来实现。

标签:02,创建,IApi,工厂,api,简单,public
From: https://www.cnblogs.com/huiteresa/p/17445822.html

相关文章

  • [ABC302G]
    [ABC302G]Sortfrom1to4一道简单的性质分析题。考虑到这个数列只有\([1,4]\)的数,就可以考虑有哪几种交换方案。我们先统计出\(t[i][j]\)表示应该填\(i\)但是填了\(j\)的位置,注意\(i=j\)时\(t[i][j]=0\)。交换两个数,例如\(t[1][2],t[2][1]\),代价为\(1\),恢复......
  • April 2023-Memory-efficient Reinforcement Learning with Value-based Knowledge Co
    摘要:人工神经网络在一般函数逼近方面很有希望,但由于灾难性遗忘,在非独立或非同分布的数据上训练具有挑战性。经验回放缓冲区(experiencereplaybuffer)是深度强化学习中的一个标准组件,通过将经验存储在一个大的缓冲区中并用于以后的训练,通常用于减少遗忘和提高样本效率。然而,较大......
  • The 2023 Guangdong Provincial Collegiate Programming Contest
    A-算法竞赛#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){intst,n,ed;cin>>st>>n;map<int,int>cnt;for(inti=1,x;i<=n;i++){cin>>x;......
  • 最大熵模型原理——选择符合所有事实,在其他方面尽可能均匀分布(熵最大)的模型,其实思想很
    1.熵与最大熵原理熵是随机变量不确定性的度量,不确定性越大,熵值就越大;若随机变量退化成定值,熵为0。均匀分布是“最不确定”的分布假设离散随机变量X的概率分布为P(x),则其熵为:联合熵和条件熵两个随机变量的X,Y的联合分布,可以形成联合熵,用H(X,Y)表示条件熵H(X|Y)=H(X,Y)-H(Y) 相对......
  • P9370 APIO2023 赛博乐园 / cyberland
    P9370APIO2023赛博乐园/cyberland。题目就是让我们求一个有各种优惠政策的单源点\(0\),单汇点\(H\)的最短路。优惠政策是:到达能力为\(2\)的点,可以让之前走过的距离除以\(2\)。到达能力为\(0\)的点,可以让之前走过的距离直接变成\(0\)。有限制:不能经过\(H\)多次......
  • mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的
    MDNS协议介绍mDNSmulticastDNS,使用5353端口,组播地址224.0.0.251。在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口、包格式和操作语义。MDNS协议的报文与DNS的报文结构相同,但有些字段对于MDNS来说有新的含义。每个进入局域网的主机,如果开启了mDNS服......
  • 【2023 · CANN训练营第一季】——Ascend C算子沙箱实验
    前言:CANN训练营的Ascend C算子课程,以在线课程的方式提供了一个沙箱实验环境。这将有助于帮助开发者了解Ascend C算子开发的软、硬件环境;熟悉自定义AscendC算子的开发流程和关键代码;同时也可以了解到自定义算子包的部署路径及部署后的各类文件。在线试验地址:在线实验>基于昇腾CA......
  • SSO2.0 11-20230530
           ......
  • java简单实现布隆过滤器
    为了方便理解布隆过滤器,java简单实现了下,特点:仅用做一次运算就可以判断存在不存在,但是只能精确的判断值不存在,不能精确的判断值存在publicclassBlTest{privatefinalintf=1024;//负载因子,值越大判断的越精准,但是所占的空间也越大int[]bArray;BlTest(){......
  • 【2023-05-30】我的父亲
    20:00如果把一个人的一生比作一本书,我们也不会以书的页数来判断书的深度,通常我们只会看这本书所包含内容的丰富程度,人的一生也是如此。                                            ......