首页 > 其他分享 >03.抽象工厂模式

03.抽象工厂模式

时间:2022-11-15 02:44:05浏览次数:48  
标签:03 Product abstract public 抽象 工厂 class

抽象工厂模式

Abstract Factory Pattern

在简单工厂之后变化得到了工厂方法模式(A工厂生产商品a,B工厂生产商品b),不同的工厂生产不同的商品还有其他变化,现在有一下场景工厂A可以生产商品a和b,工厂B也可以生产商品a和b,这种情况需要在工厂中再处理一下


// 抽象产品
namespace 抽象工厂模式
{
    public abstract class Product
    {
    }

    // 鸭脖
    public abstract class Yabo : Product
    {
    }
    // 鸭架
    public abstract class Yajia : Product
    {
    }
}


// 抽象工厂
namespace 抽象工厂模式
{
    public abstract class Factory
    {
        public abstract Yabo CreateYabo();
        public abstract Yajia CreateYajia();
    }
}

// 具体产品
namespace 抽象工厂模式
{
    class ShanghaiYabo : Yabo
    {
    }

    class ShanghaiYajia : Yajia
    {
    }

    class WuhanYabo : Yabo
    {
    }

    class WuhanYajia : Yajia
    {
    }
}

// 具体工厂

namespace 抽象工厂模式
{
    class ShanghaiFactory : Factory
    {
        public override Yabo CreateYabo()
        {
            return new ShanghaiYabo();
        }

        public override Yajia CreateYajia()
        {
            return new ShanghaiYajia();
        }
    }

    public class WuhanFactory : Factory
    {
        public override Yabo CreateYabo()
        {
            return new WuhanYabo();
        }

        public override Yajia CreateYajia()
        {
            return new WuhanYajia();
        }
    }
}

// 创建实例

namespace 抽象工厂模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Factory shanghaiFactory = new ShanghaiFactory();
            Product shanghaiYabo = shanghaiFactory.CreateYabo();
            Product shanghaiYajia = shanghaiFactory.CreateYajia();


            Factory wuhanFactory = new WuhanFactory();
            Product wuhanYabo = wuhanFactory.CreateYabo();
            Product wuhanYajia = wuhanFactory.CreateYajia();

        }
    }
}


标签:03,Product,abstract,public,抽象,工厂,class
From: https://www.cnblogs.com/thomerson/p/16891152.html

相关文章

  • 003.实现用户登录Model层
    1.创建实体类(entity下)packagecom.imooc.oa.entity;publicclassUser{privateLonguserId;//user_idprivateStringusername;privateStringpass......
  • 抽象类、abstract关键字
    目录abstract关键字抽象类的匿名子类抽象类的应用:模板方法的设计模式abstract关键字abstract:抽象的abstract可以用来修饰的结构:类、方法abstract修饰类:抽象类此类......
  • 【EF core】Microsoft.Data.Sqlite.SqliteException:“SQLite Error 14: 'unable to o
    数据库配置错误。将相对地址修改为绝对地址就可以了。提示错误<?xmlversion="1.0"encoding="utf-8"?><configuration><connectionStrings><addname......
  • Gurobi报错:GurobiError: Unable to retrieve attribute 'X'
    当我试图获得gurobi.optimize()后目标函数的最值(obj.X)的时候,Gurobi报错:GurobiError:Unabletoretrieveattribute'X‘查找原因是因为添加的相关约束使得原函数无解,所......
  • CF903E Swapping Characters
    CF903E:一个复杂度较优的做法首先对于题目情况分类讨论一下,整理出2种主要情况:即分别有3,4个位置不同,对于具体情况直接模拟即可。为什么两个位置不同不行呢?因为无法保证......
  • 题解 HDU4035 【Maze】
    postedon2022-08-1712:33:51|under题解|sourceproblemhttps://vjudge.net/problem/HDU-4035SHY在一棵树上随机游走,从根节点出发,每次有\(k_u\)的几率回到根节......
  • 抽象工厂
    其实一个简单的计算器就足够了,但是设计模式让它变得越来越复杂了。publicinterfaceICalculator{decimalInvoke(paramsdecimal[]args);}pu......
  • SpringMVC 项目中 创建SpringBoot后,引起的No bean named 'xxx' available
    ​参考:https://blog.csdn.net/weixin_44341110/article/details/115208375https://blog.csdn.net/qq_40929531/article/details/103956332 我是sessionFactory报错......
  • 实景三维数字孪生工厂可视化对产业经济发展有重要意义
    大力推进工程生产过程数字化监控、管理、生产等数字化转型,对工厂经济发展具有重要意义,3D数字孪生智能工厂云交互系统借助web3d开发、数字孪生、三维交互、VR虚拟仿真等......
  • ARC 103 /\/\/\/ 题解
    前缀和一下,就好了#include<bits/stdc++.h>usingnamespacestd;typedefunsignedlonglongull;constintN=1e5+99;inta[N],odd[N],even[N];structcmp{ boolo......