C#简单工厂模式的实现

using System.Diagnostics.Metrics;
using System.Runtime.InteropServices;
using static 手写工厂模式.Program;

namespace 手写工厂模式
{
    internal class Program
    {
        public interface eats {
            void eat();
        }//定义了一个接口
        public class rice : eats
        {
            public void eat() {
                Console.WriteLine("吃米饭");
            }
        }//继承接口并实现方法
        public class pig : eats
        {
            public void eat()
            {
                Console.WriteLine("吃猪猪");
            }
        }//继承接口并实现方法
        public class bird : eats
        {
            public void eat()
            {
                Console.WriteLine("吃小鸟");
            }
        }//继承接口并实现方法
        public class TransportFactory//创建一个工厂
        {
            public static eats GetTransport(string type)//eats 是指定的返回类型,表示该方法返回一个实现了 eats 接口的对象。
            {
                switch (type.ToLower())
                {
                    case "rice":
                        return new rice();
                    case "pig":
                        return new pig();
                    case "bird":
                        return new bird();
                    default:
                        throw new ArgumentException($"不支持该类型:{type}");//如果传入了没有的就会报错
                }
            }
        }
        static void Main(string[] args)
            {
            eats transport = TransportFactory.GetTransport("rice");//这句是必须得它声明了transport的类型为eats
            transport.eat();
            transport = TransportFactory.GetTransport("pig");//因为上面声明了transport的类型所以这里可以直接用
            transport.eat();
        }
        }
    }

 

输出 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在C#实现工厂模式的代码示例: 1. 简单工厂模式(Simple Factory Pattern): ```csharp public abstract class Product { public abstract void Operation(); } public class ConcreteProductA : Product { public override void Operation() { Console.WriteLine("ConcreteProductA operation"); } } public class ConcreteProductB : Product { public override void Operation() { Console.WriteLine("ConcreteProductB operation"); } } public class SimpleFactory { public Product CreateProduct(string productType) { if (productType == "A") { return new ConcreteProductA(); } else if (productType == "B") { return new ConcreteProductB(); } else { throw new ArgumentException("Invalid product type"); } } } // 客户端使用示例 SimpleFactory factory = new SimpleFactory(); Product productA = factory.CreateProduct("A"); productA.Operation(); // 输出:ConcreteProductA operation Product productB = factory.CreateProduct("B"); productB.Operation(); // 输出:ConcreteProductB operation ``` 2. 工厂方法模式(Factory Method Pattern): ```csharp public abstract class Product { public abstract void Operation(); } public class ConcreteProductA : Product { public override void Operation() { Console.WriteLine("ConcreteProductA operation"); } } public class ConcreteProductB : Product { public override void Operation() { Console.WriteLine("ConcreteProductB operation"); } } public abstract class Creator { public abstract Product FactoryMethod(); public void SomeOperation() { Product product = FactoryMethod(); product.Operation(); } } public class ConcreteCreatorA : Creator { public override Product FactoryMethod() { return new ConcreteProductA(); } } public class ConcreteCreatorB : Creator { public override Product FactoryMethod() { return new ConcreteProductB(); } } // 客户端使用示例 Creator creatorA = new ConcreteCreatorA(); creatorA.SomeOperation(); // 输出:ConcreteProductA operation Creator creatorB = new ConcreteCreatorB(); creatorB.SomeOperation(); // 输出:ConcreteProductB operation ``` 在这些示例中,我们定义了抽象产品类 `Product` 和具体产品类 `ConcreteProductA` 和 `ConcreteProductB`。对于简单工厂模式,我们创建了一个简单工厂类 `SimpleFactory`,它的 `CreateProduct` 方法根据传入的参数来创建对应的产品对象。对于工厂方法模式,我们定义了抽象创建者类 `Creator` 和具体创建者类 `ConcreteCreatorA` 和 `ConcreteCreatorB`,每个具体创建者类实现了工厂方法来创建对应的产品对象。 客户端使用时,先创建相应的工厂类对象,然后通过工厂对象的方法来创建产品对象,并进行相应的操作。 以上是在C#实现工厂模式的示例代码。通过使用工厂模式,我们可以将对象的创建逻辑封装起来,使得客户端代码与具体类解耦,并提供了一种可扩展和可维护的方式来创建对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值