工厂方法模式(Factory Method Pattern)
来源:互联网 发布:淘宝产品参数是真的吗 编辑:程序博客网 时间:2024/06/09 21:30
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
using System;
public abstract class Light
...{
public abstract void TurnOn();
public abstract void TurnOff();
}
public class BulbLight : Light
...{
public override void TurnOn()
...{ Console.WriteLine("Bulb Light is Turned on"); }
public override void TurnOff()
...{ Console.WriteLine("Bulb Light is Turned off"); }
}
public class TubeLight : Light
...{
public override void TurnOn()
...{ Console.WriteLine("Tube Light is Turned on"); }
public override void TurnOff()
...{ Console.WriteLine("Tube Light is Turned off"); }
}
public abstract class Creator
...{
public abstract Light factory();
}
public class BulbCreator : Creator
...{
public override Light factory()
...{ return new BulbLight(); }
}
public class TubeCreator : Creator
...{
public override Light factory()
...{ return new TubeLight(); }
}
public class Client
...{
public static void Main()
...{
Creator c1 = new BulbCreator();
Creator c2 = new TubeCreator();
Light l1 = c1.factory();
Light l2 = c2.factory();
l1.TurnOn();
l1.TurnOff();
Console.WriteLine("-----------------");
l2.TurnOn();
l2.TurnOff();
}
}
public abstract class Light
...{
public abstract void TurnOn();
public abstract void TurnOff();
}
public class BulbLight : Light
...{
public override void TurnOn()
...{ Console.WriteLine("Bulb Light is Turned on"); }
public override void TurnOff()
...{ Console.WriteLine("Bulb Light is Turned off"); }
}
public class TubeLight : Light
...{
public override void TurnOn()
...{ Console.WriteLine("Tube Light is Turned on"); }
public override void TurnOff()
...{ Console.WriteLine("Tube Light is Turned off"); }
}
public abstract class Creator
...{
public abstract Light factory();
}
public class BulbCreator : Creator
...{
public override Light factory()
...{ return new BulbLight(); }
}
public class TubeCreator : Creator
...{
public override Light factory()
...{ return new TubeLight(); }
}
public class Client
...{
public static void Main()
...{
Creator c1 = new BulbCreator();
Creator c2 = new TubeCreator();
Light l1 = c1.factory();
Light l2 = c2.factory();
l1.TurnOn();
l1.TurnOff();
Console.WriteLine("-----------------");
l2.TurnOn();
l2.TurnOff();
}
}
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式 Factory Method Pattern
- 工厂方法模式(factory method pattern)
- 二、工厂方法模式(Factory Method Pattern)
- 工厂方法模式 The Factory Method Pattern
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)草书
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式( Factory Method Pattern)
- 工厂方法模式【FACTORY METHOD PATTERN 】
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 单片机中断计数器时钟
- 对JBPM的一些理解,很有用处
- 学习STL
- struts- menu
- html与jsp之间的编码码问题
- 工厂方法模式(Factory Method Pattern)
- java web url
- Surprise Data Query(SDQ)简介
- 一些sql语句
- Visual Studio 2005 Language Service 插件开发点滴
- 推荐引擎机制的前提、基本方式和典型应用
- c#中的md5加密 (win和web)
- 在java判断字符串有多少中文字
- jsp连接oracle实例