设计模式2、3、4 - 简答工厂、工厂模式 、抽象工厂 学习

本文探讨了软件设计中的开闭原则,即模块应对扩展开放,对修改关闭。通过实例展示了如何使用工厂模式来实现这一原则,包括简单工厂和抽象工厂模式。文章以创建对象为例,解释了如何通过隐藏复杂创建过程,实现类的灵活扩展。此外,还以泡茶为例,说明了如何运用工厂模式创建不同类型的茶叶。
摘要由CSDN通过智能技术生成

开闭原则:扩展开放、修改关闭

使用:
创建过程复杂,希望对外隐藏这些细节:

  • 连接池,线程池;固定数量
  • 隐藏对外真实类型 class A classA_V2 classA-V3
  • 对象创建会有很多参数来决定如何创建

eg: A * a = new A(…)

  • 创建对象有复杂的依赖关系

class A创建依赖class B与C 但是 B与C没啥用

可以用到设计模式的地方:
1 一个对象的导出 可以是xm、json、txt

抽象出 IExport {Export(string content)}
在这里插入图片描述

https://blog.csdn.net/m0_37965018/article/details/103152585
https://www.cnblogs.com/binbinshan/p/14231970.html
拿泡茶为例,茶叶有好多种类,比如龙井、碧螺春、毛尖等
1.抽象 出茶
1.1 创建不同品牌的茶
2.抽象出 能创建茶的工厂
2.1 创建出不同品牌茶的工厂
最后
ITeaFacotry teaFactory = new 某个 品牌茶的工厂()
teaFactory.CreateTea();

简单工厂 --》工厂模式:
在这里插入图片描述

抽象工厂:
先定义抽象的产品

		public abstract class Button
        {
            public abstract void Show();
        }

        public abstract class Checkbox
        {
            public abstract void Show();
        }

具体的产品

       public class WinBotton : Button
       {
           public override void Show()
           {
               Console.WriteLine("win btn click");
           }
       }

       public class WinCheckbox : Checkbox
       {
           public override void Show()
           {
               Console.WriteLine("win checkbox click");
           }
       }

具体的产品

        public class MacBotton : Button
        {
            public override void Show()
            {
                Console.WriteLine("Mac btn click");
            }
        }

        public class MacCheckbox : Checkbox
        {
            public override void Show()
            {
                Console.WriteLine("Mac checkbox click");
            }
        }

定义抽象的工厂

        public interface IGuiFactory
        {
             Button CreateBotton();
             Checkbox CreateCheckbox();
        }

具体的工厂

       public class WinFactory : IGuiFactory
       {
           public Button CreateBotton()
           {
               return new WinBotton();
           }

           public Checkbox CreateCheckbox()
           {
               return new WinCheckbox();
           }
       }

具体的工厂

       public class MacFactory : IGuiFactory
       {
           public Button CreateBotton()
           {
               return new MacBotton();
           }

           public Checkbox CreateCheckbox()
           {
               return new MacCheckbox();
           }
       }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值