自己看着视频的理解:设计模式之abstractfactory模式(2)
2008-10-10 08:22
441 查看
抽象工厂模式的实现:
1.首先建立一个要生产产品的抽象工厂类,列出所要生产的抽象产品。(其产品都是设计时已经固定且都是互相依赖,不会改变的)
abstract class DPFactory
{
//工厂要生产的产品
abstract public DPDocument CreateDocument();
abstract public DPView CreateView();
abstract public DPWorkspace CreateWorkspace();
}
2.根据第一点对抽象产品建立相应的产品抽象类(对抽象产品进行建立抽象类,是固定不定的,
但其产品样式等属于动态,随时都会改变,在其具体实现的时候继成此抽象类来改变)
abstract class DPDocument
{
abstract public void Dump();
}
abstract class DPWorkspace
{
abstract public void Dump();
}
abstract class DPView
{
abstract public void Dump();
}
3.客户程序根据业务逻辑进行构造产品,其都是依赖1、2的抽象类,并不依赖具体的实现!(实现稳定)
abstract class DPApplication
{
protected DPDocument doc;
protected DPWorkspace workspace;
protected DPView view;
//客户端的构造器,构造以factory的形式进行实现产品,具体的什么形式,根据传递过来的参数
public void ConstructObjects(DPFactory factory)
{
//创建一系列产品,都是依赖抽象类,并不依赖具体实现
workspace = factory.CreateWorkspace();
doc = factory.CreateDocument();
view = factory.CreateView();
}
abstract public void Dump();
//实现产品里的方法
public void DumpState()
{
if (doc != null) doc.Dump();
if (workspace != null) workspace.Dump();
if (view != null) view.Dump();
}
}
4.建立完工厂框架后对对于上述的第一点,第二点进行一一实现:
首先,生产产品的抽象工厂类(也就是第一点)的抽象产品进行具体实现!
class MyFactory : DPFactory
{
override public DPWorkspace CreateWorkspace()
{
return new MyWorkspace();//实现具体的WorkSpase
}
override public DPDocument CreateDocument()
{
return new MyDocument();//实现具体的Document
}
override public DPView CreateView()
{
return new MyView();//实现具体的View
}
}
然后,产品具体的实现(对于第二点)
*****************************************************
(1)实现WorkSpase方法
class MyWorkspace : DPWorkspace
{
override public void Dump()
{
Console.WriteLine("MyWorkspace exists2");
}
}
*****************************************************
(2)实现Document的方法
class MyDocument : DPDocument
{
override public void Dump()
{
Console.WriteLine("MyDocument exists1");
}
}
*****************************************************
(3)实现View的方法
class MyView : DPView
{
override public void Dump()
{
Console.WriteLine("MyView exists3");
}
}
5.将抽象的客户程序(第三点),以重写,进行具体的实现:
class MyApplication : DPApplication
{
//要实现的具体工厂
MyFactory myFactory = new MyFactory();
override public void Dump()
{
Console.WriteLine("MyApplication exists");
}
public void CreateFamily()
{
MyFactory myFactory = new MyFactory();
ConstructObjects(myFactory);
}
}
6.开始应用:调用具体实现工厂(第五点)的客户程序
public class Client
{
public static int Main(string[] args)
{
//初始化客户程序
MyApplication myApplication = new MyApplication();
myApplication.CreateFamily();
myApplication.DumpState();//父类里的方法
return 0;
}
}
以上是本人理解abstractfactory模式的流程,路过的人如有看到不妥之处,麻烦指证,不圣感激!
1.首先建立一个要生产产品的抽象工厂类,列出所要生产的抽象产品。(其产品都是设计时已经固定且都是互相依赖,不会改变的)
abstract class DPFactory
{
//工厂要生产的产品
abstract public DPDocument CreateDocument();
abstract public DPView CreateView();
abstract public DPWorkspace CreateWorkspace();
}
2.根据第一点对抽象产品建立相应的产品抽象类(对抽象产品进行建立抽象类,是固定不定的,
但其产品样式等属于动态,随时都会改变,在其具体实现的时候继成此抽象类来改变)
abstract class DPDocument
{
abstract public void Dump();
}
abstract class DPWorkspace
{
abstract public void Dump();
}
abstract class DPView
{
abstract public void Dump();
}
3.客户程序根据业务逻辑进行构造产品,其都是依赖1、2的抽象类,并不依赖具体的实现!(实现稳定)
abstract class DPApplication
{
protected DPDocument doc;
protected DPWorkspace workspace;
protected DPView view;
//客户端的构造器,构造以factory的形式进行实现产品,具体的什么形式,根据传递过来的参数
public void ConstructObjects(DPFactory factory)
{
//创建一系列产品,都是依赖抽象类,并不依赖具体实现
workspace = factory.CreateWorkspace();
doc = factory.CreateDocument();
view = factory.CreateView();
}
abstract public void Dump();
//实现产品里的方法
public void DumpState()
{
if (doc != null) doc.Dump();
if (workspace != null) workspace.Dump();
if (view != null) view.Dump();
}
}
4.建立完工厂框架后对对于上述的第一点,第二点进行一一实现:
首先,生产产品的抽象工厂类(也就是第一点)的抽象产品进行具体实现!
class MyFactory : DPFactory
{
override public DPWorkspace CreateWorkspace()
{
return new MyWorkspace();//实现具体的WorkSpase
}
override public DPDocument CreateDocument()
{
return new MyDocument();//实现具体的Document
}
override public DPView CreateView()
{
return new MyView();//实现具体的View
}
}
然后,产品具体的实现(对于第二点)
*****************************************************
(1)实现WorkSpase方法
class MyWorkspace : DPWorkspace
{
override public void Dump()
{
Console.WriteLine("MyWorkspace exists2");
}
}
*****************************************************
(2)实现Document的方法
class MyDocument : DPDocument
{
override public void Dump()
{
Console.WriteLine("MyDocument exists1");
}
}
*****************************************************
(3)实现View的方法
class MyView : DPView
{
override public void Dump()
{
Console.WriteLine("MyView exists3");
}
}
5.将抽象的客户程序(第三点),以重写,进行具体的实现:
class MyApplication : DPApplication
{
//要实现的具体工厂
MyFactory myFactory = new MyFactory();
override public void Dump()
{
Console.WriteLine("MyApplication exists");
}
public void CreateFamily()
{
MyFactory myFactory = new MyFactory();
ConstructObjects(myFactory);
}
}
6.开始应用:调用具体实现工厂(第五点)的客户程序
public class Client
{
public static int Main(string[] args)
{
//初始化客户程序
MyApplication myApplication = new MyApplication();
myApplication.CreateFamily();
myApplication.DumpState();//父类里的方法
return 0;
}
}
以上是本人理解abstractfactory模式的流程,路过的人如有看到不妥之处,麻烦指证,不圣感激!
相关文章推荐
- 自己看着视频的理解:设计模式之Builder模式(1)
- 设计模式入门--自己的理解
- 记录自己理解的一些设计模式
- 自己对设计模式的理解:工厂模式和单例模式
- 自己对设计模式的理解:工厂模式和单例模式
- 自己的理解23种设计模式
- [面试] - jdk 中的设计模式(加入自己的理解)
- Java设计模式---待添加自己的理解
- 设计模式的理解 (自己的理解,待完善)
- 设计模式思想自己理解
- 设计模式原则(自己理解的)
- 记录自己理解的设计模式
- 设计模式之Builder (创建者模式)的一些个人理解(转)
- 三分钟理解“简单工厂模式”——设计模式轻松掌握
- 设计模式——抽象工厂模式AbstractFactory
- 三分钟理解“策略模式”——设计模式轻松掌握
- 设计模式需要理解的原则
- 我的设计模式之旅(3)――抽象工厂模式AbstractFactory
- PetShop4.0视频讲解 - 通过简单案例理解petshop4.0的工厂模式
- 【OC学习-29】单例设计模式的理解、案例和简单总结