Patterns in SOME –Factory Method
2007-03-01 16:18
471 查看
Code in C#:
[align=left] [/align]
[align=left]namespace FactoryMethod_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] // These two classes could be part of a framework,[/align]
[align=left] // which we will call DP[/align]
[align=left] // ===============================================[/align]
[align=left] [/align]
[align=left] class DPDocument [/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] abstract class DPApplication [/align]
[align=left] {[/align]
[align=left] protected DPDocument doc;[/align]
[align=left] [/align]
[align=left] abstract public void CreateDocument();[/align]
[align=left] [/align]
[align=left] public void ConstructObjects()[/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] // Create objects as needed[/align]
[align=left] // . . .[/align]
[align=left] [/align]
[align=left] // including document[/align]
[align=left] CreateDocument();[/align]
[align=left] } [/align]
[align=left] abstract public void Dump();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] // These two classes could be part of an application [/align]
[align=left] // =================================================[/align]
[align=left] [/align]
[align=left] class MyApplication : DPApplication [/align]
[align=left] {[/align]
[align=left] override public void CreateDocument()[/align]
[align=left] {[/align]
[align=left] doc = new MyDocument(); [/align]
[align=left] } [/align]
[align=left] [/align]
[align=left] override public void Dump()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("MyApplication exists");[/align]
[align=left] }[/align]
[align=left] } [/align]
[align=left] [/align]
[align=left] class MyDocument : DPDocument [/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] {[/align]
[align=left] MyApplication myApplication = new MyApplication();[/align]
[align=left] [/align]
[align=left] myApplication.ConstructObjects();[/align]
[align=left] [/align]
[align=left] myApplication.Dump();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]
[align=left] [/align]
CDPDocument
CMyDocument :CDPDocument
ADPApplication ->CDPDocument[m_doc]
a_CreateDocument()
ConstructObjects()
a_Dump()
CMyApplication :ADPApplication
o_CreateDocument()
o_Dump()
CClient
main
CClient.main
{
CMyApplication myApplication.();
myApplication.ConstructObjects<ADPApplication>()
{
CreateDocument<CMyApplication>() //override method define
{
m_doc<CMyDocument>.(); //"m_doc = new MyDocument()"
};
};
myApplication.Dump()
{
//MyApplication exists //comment
};
}
[align=left] [/align]
[align=left]namespace FactoryMethod_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] // These two classes could be part of a framework,[/align]
[align=left] // which we will call DP[/align]
[align=left] // ===============================================[/align]
[align=left] [/align]
[align=left] class DPDocument [/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] abstract class DPApplication [/align]
[align=left] {[/align]
[align=left] protected DPDocument doc;[/align]
[align=left] [/align]
[align=left] abstract public void CreateDocument();[/align]
[align=left] [/align]
[align=left] public void ConstructObjects()[/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] // Create objects as needed[/align]
[align=left] // . . .[/align]
[align=left] [/align]
[align=left] // including document[/align]
[align=left] CreateDocument();[/align]
[align=left] } [/align]
[align=left] abstract public void Dump();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] // These two classes could be part of an application [/align]
[align=left] // =================================================[/align]
[align=left] [/align]
[align=left] class MyApplication : DPApplication [/align]
[align=left] {[/align]
[align=left] override public void CreateDocument()[/align]
[align=left] {[/align]
[align=left] doc = new MyDocument(); [/align]
[align=left] } [/align]
[align=left] [/align]
[align=left] override public void Dump()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("MyApplication exists");[/align]
[align=left] }[/align]
[align=left] } [/align]
[align=left] [/align]
[align=left] class MyDocument : DPDocument [/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] {[/align]
[align=left] MyApplication myApplication = new MyApplication();[/align]
[align=left] [/align]
[align=left] myApplication.ConstructObjects();[/align]
[align=left] [/align]
[align=left] myApplication.Dump();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]
[align=left] [/align]
CDPDocument
CMyDocument :CDPDocument
ADPApplication ->CDPDocument[m_doc]
a_CreateDocument()
ConstructObjects()
a_Dump()
CMyApplication :ADPApplication
o_CreateDocument()
o_Dump()
CClient
main
CClient.main
{
CMyApplication myApplication.();
myApplication.ConstructObjects<ADPApplication>()
{
CreateDocument<CMyApplication>() //override method define
{
m_doc<CMyDocument>.(); //"m_doc = new MyDocument()"
};
};
myApplication.Dump()
{
//MyApplication exists //comment
};
}
相关文章推荐
- Patterns in SOME –Observer
- Patterns in SOME –Proxy
- Patterns in SOME –Prototype
- Patterns in SOME –Memento
- Patterns in SOME –Flyweight
- Patterns in SOME –Builder
- Patterns in SOME –Mediator
- Patterns in SOME –Facade
- Patterns in SOME –Abstract Factory
- Patterns in SOME –Iterator
- Patterns in SOME –Decorator
- Patterns in SOME – Command
- Patterns in SOME –Composite
- Patterns in SOME - Visitor
- Patterns in SOME –Chain Of Responsibility
- Patterns in SOME –Bridge
- use AWK to extract some lines according to some patterns in file
- Patterns in SOME - Strategy
- Patterns in SOME –Template Method
- Patterns in SOME –Adapter (class)