设计模式之抽象工厂(AbstractFactory)---用抽象工厂实现网页样式生成器
2008-06-10 17:29
471 查看
意图[gof 设计模式]:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
我们经常会碰到这样一种情况,我们需要一系列的平级对象来共同完成一种服务。对象的变化更多的是系列间的变化,而不是系列对象内部关系的变化。比如说数据库操作相关类。命令对象,链接对象,适配器对象。我们需要增加一种新数据访问相关对象的可能性比较小。但是从mssql 命令对象,连接对象....到oracle命令对象,连接对象....的可能性则大得多。那么怎样实现一种面向在系列对象变化方向扩展性的解决方案呢。答案就是抽象工厂。
下面来分析一个具体情景:
假如我要一个html 生成器,生成的html 粗略的分成 head、 body 、foot 三个部分。 head+ body +foot 这种抽象的结构是相对稳定的。但是具体的样式可能分为古典型(古典型head + 古典型 body + 古典型 foot),时尚型(时尚型 head + 时尚型 body +时尚型 foot)。。。而这种风格类别的改变是相对频繁的。那么我们可以通过抽象工厂解决。
以下是网页生成器的类图:
public abstract class Abody
public class ClassicBody:Abody
public class VogueBody:Abody
public interface IFactory
public class VogueFactory : IFactory
public class ClassicFactory:IFactory
protected void Page_Load(object sender, EventArgs e)
{
{
factory = new ClassicFactory();
sb = new System.Text.StringBuilder();
first = false;
goto l;
}
运行结果:
AbstractFactory.VogueHead
AbstractFactory.VogueBody
AbstractFactory.VogueFoot
AbstractFactory.ClassicHead
AbstractFactory.ClassicBody
AbstractFactory.ClassicFoot
我们经常会碰到这样一种情况,我们需要一系列的平级对象来共同完成一种服务。对象的变化更多的是系列间的变化,而不是系列对象内部关系的变化。比如说数据库操作相关类。命令对象,链接对象,适配器对象。我们需要增加一种新数据访问相关对象的可能性比较小。但是从mssql 命令对象,连接对象....到oracle命令对象,连接对象....的可能性则大得多。那么怎样实现一种面向在系列对象变化方向扩展性的解决方案呢。答案就是抽象工厂。
下面来分析一个具体情景:
假如我要一个html 生成器,生成的html 粗略的分成 head、 body 、foot 三个部分。 head+ body +foot 这种抽象的结构是相对稳定的。但是具体的样式可能分为古典型(古典型head + 古典型 body + 古典型 foot),时尚型(时尚型 head + 时尚型 body +时尚型 foot)。。。而这种风格类别的改变是相对频繁的。那么我们可以通过抽象工厂解决。
以下是网页生成器的类图:
public abstract class Abody
public class ClassicBody:Abody
public class VogueBody:Abody
public interface IFactory
public class VogueFactory : IFactory
public class ClassicFactory:IFactory
protected void Page_Load(object sender, EventArgs e)
{
{
factory = new ClassicFactory();
sb = new System.Text.StringBuilder();
first = false;
goto l;
}
运行结果:
AbstractFactory.VogueHead
AbstractFactory.VogueBody
AbstractFactory.VogueFoot
AbstractFactory.ClassicHead
AbstractFactory.ClassicBody
AbstractFactory.ClassicFoot
相关文章推荐
- 白话设计模式--抽象工厂(AbstractFactory)
- C#设计模式之抽象工厂(AbstractFactory)
- scala实现设计模式之抽象工厂方法
- 设计模式--创建型-AbstractFactory(抽象工厂)
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- 网页设计:AspNetPager控件+repeater+Ajax+存储过程实现高效分页,还有漂亮控件样式
- 设计模式--抽象工厂(AbstractFactory)
- 设计模式(二):抽象工厂AbstractFactory(创建型模式)
- 设计模式之C#实现(一)--AbstractFactory
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- C#设计模式之抽象工厂(AbstractFactory)
- 设计模式--抽象工厂(AbstractFactory)
- 设计模式之C#实现--AbstractFactory
- C#设计模式之抽象工厂(AbstractFactory)
- 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式
- 设计模式(二)----- 抽象工厂(AbstractFactory)----(JAVA版)
- 设计模式----抽象工厂C++实现
- 设计模式之抽象工厂(AbstractFactory)
- 设计模式PHP5实现之----生成器(Builder)