一聚教程网:一个值得你收藏的教程网站

热门教程

我把Black_Cat与Walaqi等关于"设计模式"之"工厂方法&q

时间:2022-07-02 18:08:02 编辑:袖梨 来源:一聚教程网

工厂方法中如何知道实体产品到底是什么产品呢?
black_cat 发表于 2002-12-10 11:11
虽然模式上说是为了避免客户端知道具体的实体产品。但如果修改了产品的接口,如何能让客户端知道新的接口呢?
比如一个Garden工厂用Create方法创建了两个产品Flower,Glass,都属于抽象产品Plant,但Flower增加了接口Color,而Glass没有该接口,但有另一个接口EverGreenAble。那客户端还是必须根据具体产品来确定该如何工作,但现在客户端只知道是Plant类型,并不知道究竟是哪个产品啊,这种情况怎么办呢?
********************************************************************************在抽象工厂创建新新产品,往往带有较明显的功能取向性的...
epower2002 发表于 2002-12-10 11:22
比如说:
1) 建立一个抽象工厂(Abstract Factory)类HouseFactory,在这个类中声明:
    CreateWall ()
    CreateDoor ()
    CreateFloor ()
    CreateCeiling ()
    CreatePillar ()
2) 建立相应的抽象产品(Abstract Product)类集:
Wall, Door, Floor, Ceiling, Pillar
3) 为不同风格建立相应的具体工厂(Concrete Factory)类(不要忘了实现关系),例如:
    ChinaHouseFactory : HouseFactory
    GreeceHouseFactory : HouseFactory
    …
4) 为不同的风格建立相应的具体产品(Concrete Product)类(实现相应的抽象产品),例如:
    ChinaWall : Wall
    ChinaDoor : Door
    …
    GreeceWall : Wall
    GreeceDoor : Door
    …
具体请见"简话设计模式"
********************************************************************************工厂方法不知道他所得到的产品的具体类型
walaqi 发表于 2002-12-10 11:41 VB.NET
他只是在一个产品接口上进行操作。
例如:factory的createProduct1()返回一个product1类的实例。
penFactory的createproduct1()返回一个penProduct1类的实例,但是他们都必须满足一个条件,。全部要实现product接口

热门栏目