Windows实验:C#面向对象设计的设计模式

该文通过C#代码示例介绍了抽象工厂模式的原理和应用,展示了如何使用抽象工厂模式创建不同地区的鸭脖和鸭架,以及如何扩展到其他产品如鸭舌头。文章通过客户端代码解释了如何根据不同的工厂实例化相应的产品对象,强调了抽象工厂在隔离产品族的生产以及支持新类型添加上的优势。
摘要由CSDN通过智能技术生成
  1. 掌握C#面向对象设计模式中的抽象工厂模式;

  1. 理解为什么要使用抽象工厂模式;

  1. 能够综合运用C#面向对象的抽象、继承、接口等方法实现抽象工厂。

  1. 抽象工厂设计模式原理结构:

class Client
{
    static void Main(string[] args)
    {
        // 长沙工厂制作长沙的鸭脖和鸭架
        AbstractFactory changshaFactory = new changshaFactory();
        YaBo changshaYabo = changshaFactory.CreateYaBo();
        changshaYabo.Print();
        YaJia changshaYajia = changshaFactory.CreateYaJia();
        changshaYajia.Print();

        // 上海工厂制作上海的鸭脖和鸭架
        AbstractFactory shangHaiFactory = new ShangHaiFactory();
        shangHaiFactory.CreateYaBo().Print();
        shangHaiFactory.CreateYaJia().Print();

        Console.Read();
    }
}

/// <summary>
/// 抽象工厂类,提供创建两个不同地方的鸭架和鸭脖的接口
/// </summary>
public abstract class AbstractFactory
{
    // 抽象工厂提供创建一系列产品的接口,这里作为例子,只给出了周黑鸭中鸭脖和鸭架的创建接口
    public abstract YaBo CreateYaBo();
    public abstract YaJia CreateYaJia();
}

/// <summary>
/// 长沙周黑鸭工厂负责制作长沙的鸭脖和鸭架
/// </summary>
public class changshaFactory : AbstractFactory
{
    // 制作长沙鸭脖
    public override YaBo CreateYaBo()
    {
        return new changshaYaBo();
    }
    // 制作长沙鸭架
    public override YaJia CreateYaJia()
    {
        return new changshaYaJia();
    }
}

/// <summary>
/// 上海周黑鸭工厂负责制作上海的鸭脖和鸭架
/// </summary>
public class ShangHaiFactory : AbstractFactory
{
    // 制作上海鸭脖
    public override YaBo CreateYaBo()
    {
        return new ShangHaiYaBo();
    }
    // 制作上海鸭架
    public override YaJia CreateYaJia()
    {
        return new ShangHaiYaJia();
    }
}

/// <summary>
/// 鸭脖抽象类,供每个地方的鸭脖类继承
/// </summary>
public abstract class YaBo
{
    /// <summary>
    /// 打印方法,用于输出信息
    /// </summary>
    public abstract void Print();
}

/// <summary>
/// 鸭架抽象类,供每个地方的鸭架类继承
/// </summary>
public abstract class YaJia
{
    /// <summary>
    /// 打印方法,用于输出信息
    /// </summary>
    public abstract void Print();
}

/// <summary>
/// 长沙的鸭脖类,因为江西人喜欢吃辣的,所以长沙的鸭脖稍微会比上海做的辣
/// </summary>
public class changshaYaBo : YaBo
{
    public override void Print()
    {
        Console.WriteLine("长沙的鸭脖");
    }
}

/// <summary>
/// 上海的鸭脖没有长沙的鸭脖做的辣
/// </summary>
public class ShangHaiYaBo : YaBo
{
    public override void Print()
    {
        Console.WriteLine("上海的鸭脖");
    }
}

/// <summary>
/// 长沙的鸭架
/// </summary>
public class changshaYaJia : YaJia
{
    public override void Print()
    {
        Console.WriteLine("长沙的鸭架子");
    }
}

/// <summary>
/// 上海的鸭架
/// </summary>
public class ShangHaiYaJia : YaJia
{
    public override void Print()
    {
        Console.WriteLine("上海的鸭架子");
    }
}
public abstract class AbstractFactory
{
    // 抽象工厂提供创建一系列产品的接口
    public abstract YaSheTou CreateYaSheTou();
}
/// <summary>
/// 武汉周黑鸭工厂负责制作武汉的鸭舌头
/// </summary>
public class WuHanFactory : AbstractFactory
{
    // 制作武汉鸭舌头
    public override YaSheTou CreateYaSheTou()
    {
        return new WuHanYaSheTou();
    }
}
public abstract class YaSheTou
{
    /// <summary>
    /// 打印方法,用于输出信息
    /// </summary>
    public abstract void Print();
}
public class WuHanYaSheTou : YaSheTou
{
    public override void Print()
    {
        Console.WriteLine("武汉的鸭脖");
    }
}
class Client
{
    static void Main(string[] args)
    {
        // 武汉工厂制作武汉的鸭舌头
        AbstractFactory WuHanFactory = new WuHanFactory();
        YaSheTou WuHanYaSheTou = WuHanFactory.CreateYaSheTou();
        WuHanYaSheTou.Print();
    }
}

心得:不是很懂为什么展现出来没有框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值