抽象工厂模式

定义:定义了一个接口用于创建相关或有依赖关系的对象族,而无需明确指定具体类。

// 抽象工厂模式
namespace ConsoleApp1
{
    public abstract class WatchFactory
    {
        public abstract void showPrice();
    }

    public abstract class PhoneFactory
    {
        public abstract void showPrice();
    }

    public class XMWatch : WatchFactory
    {
        public override void showPrice()
        {
            Console.WriteLine("XMWatch");
        }
    }

    public class HWPhone : PhoneFactory
    {
        public override void showPrice()
        {
            Console.WriteLine("HWPhone");
        }
    }

    public class HWWatch : WatchFactory
    {
        public override void showPrice()
        {
            Console.WriteLine("HWWatch");
        }
    }

    public class XMPhone : PhoneFactory
    {
        public override void showPrice()
        {
            Console.WriteLine("XMPhone");
        }
    }

    public interface IAbsFactory
    {
        WatchFactory createWatchFactory();

        PhoneFactory createPhoneFactory();
    }

    public class XMFactory : IAbsFactory
    {
        public WatchFactory createWatchFactory()
        {
            return new XMWatch();
        }
        public PhoneFactory createPhoneFactory()
        {
            return new XMPhone();
        }
    }

    public class HWFactory : IAbsFactory
    {
        public WatchFactory createWatchFactory()
        {
            return new HWWatch();
        }
        public PhoneFactory createPhoneFactory()
        {
            return new HWPhone();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            XMFactory xmFactory = new XMFactory();
            ShowPrice(xmFactory);

            HWFactory hwFactory = new HWFactory();
            ShowPrice(hwFactory);
        }

        static void ShowPrice(IAbsFactory factory) {
            WatchFactory watchFactory = factory.createWatchFactory();
            PhoneFactory phoneFactory = factory.createPhoneFactory();
            watchFactory.showPrice();
            watchFactory.showPrice();
        }
    }
}

相关推荐

  1. [go] 抽象工厂模式

    2024-03-31 21:26:06       32 阅读
  2. 设计模式 抽象工厂

    2024-03-31 21:26:06       26 阅读
  3. 抽象工厂模式

    2024-03-31 21:26:06       22 阅读
  4. 设计模式抽象工厂

    2024-03-31 21:26:06       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 21:26:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 21:26:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 21:26:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 21:26:06       20 阅读

热门阅读

  1. 导航定位会跳变,记录里程计数据异常问题

    2024-03-31 21:26:06       20 阅读
  2. pytest中文使用文档----6临时目录和文件

    2024-03-31 21:26:06       20 阅读
  3. TextBlock 的run元素

    2024-03-31 21:26:06       18 阅读
  4. 探索前端开发中的路径:./、../、@/ 等详解

    2024-03-31 21:26:06       15 阅读
  5. 生产环境数据处理单sql编写

    2024-03-31 21:26:06       18 阅读
  6. Dockerfile中DSL语法

    2024-03-31 21:26:06       17 阅读
  7. python之@overload

    2024-03-31 21:26:06       19 阅读
  8. Spring Boot(版本:3.2.4)入门

    2024-03-31 21:26:06       14 阅读