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");
}
}
}
《C#设计模式》==>抽象工厂模式
最新推荐文章于 2024-07-25 00:09:37 发布