《C#设计模式》==>抽象工厂模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DesignPattern
{
    //抽象工厂模式
    internal class AbstractFactoryPattern
    {
        private void main() {
            SkinFactory _factory = new SpringSkinFactory();//可通过配置文件和反射创建
            Button1 button = _factory.CreatButton();
            ComboBox1 comboBox1 = _factory.CreatComboBox();
            TextFile1 textFile1 = _factory.CreatTextFile();
            comboBox1.Display();
            button.Display();
            textFile1.Display();
            //界面显示春色主题控件
            //切换主题只需要从配置文件切换即可,满足开闭原则

        }
        
    }
      
    interface SkinFactory
    {
        Button1 CreatButton();
        TextFile1 CreatTextFile();
        ComboBox1 CreatComboBox();

    }

    class SpringSkinFactory : SkinFactory
    {
        public Button1 CreatButton()
        {
            return new SpringButton1();
        }
        public TextFile1 CreatTextFile()
        {
            return new SpringTextFile1();
        }

        public ComboBox1 CreatComboBox()
        {
            return new SpringCombobox1();
        }

    }
    class SummerSkinFactory : SkinFactory
    {
        public Button1 CreatButton()
        {
            //SummerSkinFactory aa=(SummerSkinFactory)this.MemberwiseClone();//浅克隆

            return new SummerButton1();
        }

        public ComboBox1 CreatComboBox()
        {
            return new SummerCombobox1();
        }

        public TextFile1 CreatTextFile()
        {
            return new SummerTextFile1();
        }
    }

    interface Button1
    {
        void Display();
    }
    interface TextFile1
    {
        void Display();
    }
    interface ComboBox1
    {
        void Display();
    }
    class SpringButton1 : Button1
    {
        public void Display()
        {
            Console.WriteLine("this is spring button");
        }
    }

    class SummerButton1 : Button1
    {
        public void Display()
        {
            Console.WriteLine("this is summer button");
        }
    }


    class SpringTextFile1 : TextFile1
    {
        public void Display()
        {
            Console.WriteLine("this is spring textfile");
        }
    }

    class SummerTextFile1 : TextFile1
    {
        public void Display()
        {
            Console.WriteLine("this is summerTextfile");
        }
    }

    class SpringCombobox1 : ComboBox1
    {
        public void Display()
        {
            Console.WriteLine("this is springcombobox");
        }
    }

    class SummerCombobox1 : ComboBox1
    {
        public void Display()
        {
            Console.WriteLine("this is summercombobox");
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值