首页 > 其他分享 >设计模式-抽象工厂

设计模式-抽象工厂

时间:2024-10-28 10:10:37浏览次数:6  
标签:return string abstract public 抽象 工厂 override 设计模式 class

抽象工厂模式是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的单独工厂。抽象工厂模式通过提供一个超级工厂创建其他工厂的接口,使得客户端使用抽象的接口操作具体对象,从而实现客户端与具体工厂类解耦。

using System;  

// 抽象产品A  
public abstract class AbstractProductA  
{  
    public abstract string Use();  
}  

// 抽象产品B  
public abstract class AbstractProductB  
{  
    public abstract string Eat();  
}  

// 具体产品A1  
public class ProductA1 : AbstractProductA  
{  
    public override string Use()  
    {  
        return "Using Product A1";  
    }  
}  

// 具体产品A2  
public class ProductA2 : AbstractProductA  
{  
    public override string Use()  
    {  
        return "Using Product A2";  
    }  
}  

// 具体产品B1  
public class ProductB1 : AbstractProductB  
{  
    public override string Eat()  
    {  
        return "Eating Product B1";  
    }  
}  

// 具体产品B2  
public class ProductB2 : AbstractProductB  
{  
    public override string Eat()  
    {  
        return "Eating Product B2";  
    }  
}  

// 抽象工厂  
public abstract class AbstractFactory  
{  
    public abstract AbstractProductA CreateProductA();  
    public abstract AbstractProductB CreateProductB();  
}  

// 具体工厂1  
public class Factory1 : AbstractFactory  
{  
    public override AbstractProductA CreateProductA()  
    {  
        return new ProductA1();  
    }  

    public override AbstractProductB CreateProductB()  
    {  
        return new ProductB1();  
    }  
}  

// 具体工厂2  
public class Factory2 : AbstractFactory  
{  
    public override AbstractProductA CreateProductA()  
    {  
        return new ProductA2();  
    }  

    public override AbstractProductB CreateProductB()  
    {  
        return new ProductB2();  
    }  
}  

// 客户端代码  
public class Client  
{  
    public static void ClientCode(AbstractFactory factory)  
    {  
        AbstractProductA productA = factory.CreateProductA();  
        AbstractProductB productB = factory.CreateProductB();  

        Console.WriteLine(productA.Use());  
        Console.WriteLine(productB.Eat());  
    }  

    public static void Main(string[] args)  
    {  
        AbstractFactory factory1 = new Factory1();  
        AbstractFactory factory2 = new Factory2();  

        Console.WriteLine("Using the products created by Factory 1:");  
        ClientCode(factory1);  

        Console.WriteLine("Using the products created by Factory 2:");  
        ClientCode(factory2);  
    }  
}

标签:return,string,abstract,public,抽象,工厂,override,设计模式,class
From: https://www.cnblogs.com/fanfan-90/p/18509790

相关文章

  • 软件设计--抽象工厂模式
    就我的理解来说,抽象工厂模式就是,创建接口和抽象类,把分类逐渐总到一起~使用抽象工厂模式,完成上述产品等级结构:先对性别进行分类:packageTutorial04;publicinterfacePerson{publicStringIs();}packageTutorial04;publicclassManimplementsPerson{@......
  • 实验4:抽象工厂模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解抽象工厂模式的动机,掌握该模式的结构;2、能够利用抽象工厂模式解决实际问题。 [实验任务一]:人与肤色使用抽象工厂模式,完成下述产品等级结构: 实验要求:1.画出对应的类图;2.提交源代码;3.注意编程规范。1、......
  • 【设计模式】Java创建型设计模式之工厂模式魔法:打造灵活的冰箱工厂
    标题:《Java工厂模式魔法:打造灵活的冰箱工厂》摘要:本文深入探讨Java中的创建型设计模式之工厂模式。通过一个冰箱工厂的示例,详细解释工厂模式的概念、实现方法以及其带来的好处。读者将了解到如何使用工厂模式创建不同品牌和大小的冰箱,同时体会到该模式在提高代码可维......
  • 委外加工厂仓库库存数据怎么管理
    委外加工厂仓库库存数据的管理涉及精准追踪和监控原材料、在制品、成品的存量,确保库存数据的准确性,降低资金沉淀和库存积压。关键的一点是实施高效的库存管理系统。这种系统通常集成了实时数据更新功能,使得委外加工的企业能够通过网络平台即时掌握库存情况。详细来说,系统应包括准......
  • 算法汇总整理篇——回溯与图论的千丝万缕及问题的抽象思考
    回溯算法(重中之重)回溯法解决的问题都可以抽象为树形结构,集合的大小就构成了树的广度,递归的深度就构成了树的深度。(回溯的核心:分清楚什么数据作为广度,什么数据作为深度!!!!!)voidbacktracking(参数){if(终止条件){存放结果;return;}for......
  • Scala的抽象类
    定义:抽象类是一个包含一个或多个抽象方法的类,抽象方法是不带任何实现的方法。抽象类是为继承而生的类目的:是为子类提供公共的接口和部分实现,并确保子类实现抽象方法和成员。//定义抽象类//抽象类是一个包含一个或多个抽象方法的类//抽象方法:没有方法体,只有def和方法名abs......
  • 【C++设计模式】之单例模式,一文看懂
    【C++设计模式】之单例模式一、什么是单例模式二、单例模式的实现1.懒汉版单例模式懒汉单例模式代码实现2.饿汉单例模式饿汉单例模式代码实现3.线程安全的懒汉单例模式线程安全的懒汉模式代码实现三、总结一、什么是单例模式单例模式是一种创建型设计模式,它的......
  • 微服务网关gateway过滤器工厂与自定义过滤器
    gateway过滤器工厂与自定义过滤器过滤器工厂GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:1.路由过滤器的种类Spring提供了31种不同的路由过滤器工厂。例如:名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHead......
  • 深入理解 Java 中的抽象类
    深入理解Java中的抽象类在面向对象编程中,抽象类是一个重要的概念,它为开发者提供了一种实现代码重用和规范设计的有效手段。本文将深入探讨抽象类的定义、特性、使用场景及其在Java编程中的实际应用。1.抽象类的概述1.1什么是抽象类?在Java中,抽象类是包含一个或......
  • 2024年最新互联网大厂精选 Java 面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis
    前言春招,秋招,社招,我们Java程序员的面试之路,是挺难的,过了HR,还得被技术面,在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够入职一个独角兽公司,安稳从事喜欢的工作至今...近期也算是抽取出大部分休息的时间,为大家准备了一份通往大厂面试的小捷径,准备......