Abstract Factory构造的花园

原创 2004年09月27日 14:27:00


 

名称 Abstract Factory
结构 200433015561503.gif
意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性
  • 一个系统要独立于它的产品的创建、组合和表示时。
  • 一个系统要由多个产品系列中的一个来配置时。
  • 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
  • 当你提供一个产品类库,而只想显示它们的接口而不是实现时。

它的一个重要的作用就是改变应用程序的外观.让我们通过国内一个用java实现了的的例子来看一看抽象工厂模式是如何在应用层被使用的。假设你才买了一套住宅,屋顶有一个花园,而你需要设计一下花园的布局。花园右侧有一个花台,边上需要种一排植物,中心需要种主体植物。根据风格的不同,花园可以被设计为典雅型、使用型和懒人型。 这是用别人的java例子改成的.

 

class Garden
{
        private function Garden()
        {
        }
        public function getShade():Plant// 花台中的植物
        {
                return ;
        }
        
        public function getCenter():Plant// 中间的植物
        {
                return;
        }
        
        public function getBorder():Plant// 边上的植物
        {
                return;
        }
        
}

// ElegantGarden.as (典雅型)
class ElegantGarden extends Garden
{
        public function getShade():Plant
        {
                return new Plant("郁金香");
        }
        public function getCenter():Plant
        {
                return new Plant("榕树");
        }
        public function getBorder():Plant
        {
                return new Plant("兰草");
        }
}

// PracticalGarden.as(实用型)
class PracticalGarden extends Garden
{
        public function getShade():Plant
        {
                return new Plant("葡萄");
        }
        public function getCenter():Plant
        {
                return new Plant("石榴");
        }
        public function getBorder():Plant
        {
                return new Plant("丝瓜");
        }
}

// LasyGarden.as(懒人型)
class LasyGarden extends Garden
{
        public function getShade():Plant
        {
                return new Plant("月季");
        }
        public function getCenter():Plant
        {
                return new Plant("茶花");
        }
        public function getBorder():Plant
        {
                return new Plant("竹");
        }
}

下载源文件
此源文件中有一个grant skinner的GForm类,开发Form应用的时候,可以参考一下。

Factory Method vs Abstract Factory

Factory Method vs Abstract Factory
  • u010373266
  • u010373266
  • 2016年12月20日 16:26
  • 318

设计模式:Abstract Factory和Builder(比较区别,个人认为讲得很明白)

如果说 Factory和Prototype是同一个层次的话,那么Abstract Factory和Builder就是更高一级的层次。 1 Abstact Factory   在上面的Factory类型...
  • lovingprince
  • lovingprince
  • 2007年04月17日 10:59
  • 4231

设计模式——抽象工厂模式(Abstract Factory)

要想正确的理解设计模式,首先必须明确它是为了解决什么问题而提出来的。 抽象设计模式概念:         针对抽象工厂这个设计模式,我查找了不少资料,感觉只有涉及产品级别和产品族的才是理解了抽象工厂设...
  • u012909091
  • u012909091
  • 2014年08月02日 16:52
  • 3607

深入浅出设计模式 ------ Abstract Factory(抽象工厂)

本文可以和笔者的深入浅出设计模式 ------ Factory Method(工厂方法)参照着看, 可以区分这三个工厂模式的不同。...
  • wenniuwuren
  • wenniuwuren
  • 2015年01月29日 02:25
  • 1729

设计模式 - 抽象工厂模式(abstract factory pattern) 详解

抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/270916...
  • u012515223
  • u012515223
  • 2014年05月26日 16:52
  • 2174

设计模式 - 工厂模式(factory pattern) 详解

工厂模式(factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27081511 工厂方法模式: ...
  • u012515223
  • u012515223
  • 2014年05月26日 14:58
  • 2473

Factory模式和AbstractFactory模式

一.  AbstractFactory模式1. 意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2. 结构...
  • sndaxdrs
  • sndaxdrs
  • 2011年02月11日 15:34
  • 1768

设计模式之abstract factory篇(例子)

  Design Pattern II: Abstract Factory举例:有BMW和BENZ两家汽车工厂,他们都生产Wheel,Body,Engine。只不过生产出来的一个叫BMWWheel, ...
  • haiyan0106
  • haiyan0106
  • 2007年06月11日 21:16
  • 613

Abstract Factory Pattern(抽象工厂模式)——《深入浅出设计模式(C#/Java版)》

来源:《深入浅出设计模式(C#/Java版)》 莫勇腾 编著哎,似乎越看越觉得糊涂了,先积累吧定义:  提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂(Abstract ...
  • bydxyj
  • bydxyj
  • 2009年09月25日 14:47
  • 837

Python实现设计模式--02.工厂模式(Factory Pattern)

《设计模式》涉及到创建类的几种模式,共同的也是最根本的原则就是:不要new 对象!!!既然如此,告诉我你最先想到的是如何得到对象呢?没错,“你不让我new,那你给我个get对象的工具吧,别的我不管”。...
  • boy_vansun
  • boy_vansun
  • 2017年07月26日 00:36
  • 165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Abstract Factory构造的花园
举报原因:
原因补充:

(最多只允许输入30个字)