C#设计模式之工厂模式(3)
来源:互联网 发布:定制精品购物软件 编辑:程序博客网 时间:2024/06/10 19:02
抽象工厂模式比工厂模式具有更高层次的抽象性。当要返回一系列相关类的某一个,而每个类都能根据需要返回不同的对象时,可以使用这种模式。换句话说,抽象工厂是一个工厂对象,他能返回一系列相关类中的某一个类。也就是可以用简单工厂去决定返回哪一个类。
工厂模式的工厂,实例化的对象只有一个,如果实例化的对象是多个,就成了抽象工厂模式,其实工厂模式和抽象工厂也就这点区别
示意图
示例代码
public abstract class Button { public abstract void DisplayButton(); } public class WindowsButton : Button { public override void DisplayButton() { Console.WriteLine("我的类型是:{0}",this.GetType().ToString()); } } public class LinuxButton : Button { public override void DisplayButton() { Console.WriteLine("我的类型是:{0}", this.GetType().ToString()); } } public abstract class TextBox { public abstract void DisplayTextBox(); } public class WindowsTextBox : TextBox { public override void DisplayTextBox() { Console.WriteLine("我的类型是:{0}", this.GetType().ToString()); } } public class LinuxTextBox : TextBox { public override void DisplayTextBox() { Console.WriteLine("我的类型是:{0}", this.GetType().ToString()); } }创建工厂
public abstract class AbstractFactory { public abstract Button CreateButton(); public abstract TextBox CreateTextBox(); } public class WindowsFactory : AbstractFactory { public override Button CreateButton() { return new WindowsButton(); } public override TextBox CreateTextBox() { return new WindowsTextBox(); } } public class LinuxFactory : AbstractFactory { public override Button CreateButton() { return new LinuxButton(); } public override TextBox CreateTextBox() { return new LinuxTextBox(); } }
调用工厂
AbstractFactory factory; Button button; TextBox textbox; factory = new WindowsFactory(); button = factory.CreateButton(); textbox = factory.CreateTextBox(); button.DisplayButton(); textbox.DisplayTextBox(); Console.WriteLine("------------------------------------------"); factory = new LinuxFactory(); button = factory.CreateButton(); textbox = factory.CreateTextBox(); button.DisplayButton(); textbox.DisplayTextBox();
- C#设计模式之工厂模式(3)
- C#设计模式之工厂
- C# 设计模式 之 抽象工厂模式
- C#设计模式之简单工厂模式
- C#设计模式之抽象工厂模式
- c#设计模式之[工厂模式]
- c#设计模式之简单工厂模式
- 设计模式之C#简单工厂模式
- C# 设计模式之 工厂模式
- C#设计模式之工厂模式(1)
- C#设计模式之工厂模式(2)
- c#设计模式之工厂模式
- C#设计模式之简单工厂模式
- C#设计模式之工厂方法模式
- C#设计模式之抽象工厂模式
- c#设计模式之简单工厂模式
- c#设计模式之工厂方法模式
- C#设计模式之简单工厂模式
- Nagios监控数据库的方法
- ASP.NET MVC3学习--视图和模型(1)
- 面向对象技术
- 奇偶校验码
- android系统中的多线程(一): 关于在android中启动线程以及线程间的交互
- C#设计模式之工厂模式(3)
- HDU 2002 计算球体积
- ThinkPHP学习笔记(六)实例化模型的四种方法
- Felsenstein's tree-pruning algorithm
- v4l2
- 有趣的权重问题 id和class
- IntelliLock 1.4.1.0 绿色软件,一个给.NET的保护软件产品的产品,值得推荐的。
- BCGControlBar(MFC)创建微软Office2013用户体验
- 数组中的数只出现一次