工厂方法模式(Factory Method Pattern)
2007-04-18 10:41
274 查看
抽象工厂(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();
}
}
具体工厂(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();
}
}
相关文章推荐
- 工厂方法模式(Factory Method Pattern)应用篇(直接使用工厂方法)
- 工厂方法模式(Factory Method Pattern)
- 第 5 章 工厂方法模式【Factory Method Pattern】
- 工厂方法模式(Factory Method Pattern)
- 工厂模式(Factory Pattern)之简单工厂,工厂方法模式(Factory Method Pattern),抽象工厂模式(Abstract Factory Pattern)
- 工厂方法模式(Factory Method Pattern) 应用篇(上)
- 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern,对象创建型模式)
- 工厂方法模式(Factory Method Pattern)草书
- 工厂方法模式(Factory Method Pattern)
- Java设计模式:工厂方法模式(Factory Method Pattern)
- 六个创建型模式2:工厂方法模式-Factory Method Pattern 【学习难度:★★☆☆☆,使用频率:★★★★★】
- Net设计模式实例之工厂方法模式( Factory Method Pattern)
- 极速理解设计模式系列:9.工厂方法模式(Factory Method Pattern)
- 工厂方法模式(factory method pattern)
- 设计模式——工厂方法模式(Factory Method Pattern)
- java设计模式——工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 设计模式系列(五)工厂方法模式(Factory Method Pattern)