`
阅读更多

[关键字]:java,design pattern,设计模式,《Java与模式》,Factory
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
UML图:


 
代码:

/**
 *工厂模式测试类
 *@version 2009-4-3
 *@author Winty(wintys@gmail.com)
 */
package pattern.factory;

public class Factory{
    public static void main(String[] args){
        Fruit fruit;
        FruitGardener fruitGardener;

        fruitGardener = new AppleGardener();
        fruit = fruitGardener.factory();
        fruit.plant();
        fruit.harvest();

        fruitGardener = new StrawberryGardener();
        fruit = fruitGardener.factory();
        fruit.plant();
        fruit.harvest();

        fruitGardener = new GrapeGardener();
        fruit = fruitGardener.factory();
        fruit.plant();
        fruit.harvest();
    }
}

/**
 *抽象产品
 */
abstract class Fruit{
    protected String name;

    public abstract void plant();
    public abstract void harvest();
}

/**
 *具体产品(Apple)
 */
class Apple extends Fruit{
    public Apple(){
        name = "Apple";
    }

    @Override
    public void plant(){
        System.out.println(name + " plant");
    }

    @Override
    public void harvest(){
        System.out.println(name + " harvest");
    }
}

/**
 *具体产品(草莓)
 */
class Strawberry extends Fruit{
     
    public Strawberry(){
        name = "Strawberry";
    }
   
    @Override
    public void plant(){
        System.out.println(name + " plant");
    }

    @Override
    public void harvest(){
        System.out.println(name + " harvest");
    }
}

/**
 *具体产品(葡萄)
 */
class Grape extends Fruit{
    public Grape(){
        name = "Grape";
    }

    @Override
    public void plant(){
        System.out.println(name + " plant");
    }

    @Override
    public void harvest(){
        System.out.println(name + " harvest");
    }
}


/**
 *抽象工厂类
 */
abstract class FruitGardener{
    public abstract Fruit factory();
}

/**
 *具体Apple工厂
 */
class AppleGardener extends FruitGardener{
    @Override
    public Fruit factory(){
        return new Apple();
    }
}

/**
 *具体草莓工厂
 */
class StrawberryGardener extends FruitGardener{
    @Override
    public Fruit factory(){
        return new Strawberry();
    }
}

/**
 *具体葡萄工厂
 */
class GrapeGardener extends FruitGardener{
    @Override
    public Fruit factory(){
        return new Grape();
    }
}
  • 大小: 65.8 KB
分享到:
评论

相关推荐

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...

    java设计模式(工厂模式,动态代理,责任链模式……)实例源码

    这个压缩包中包含的实例源码涵盖了多种设计模式,包括工厂模式、动态代理和责任链模式。让我们深入探讨这些设计模式的核心概念、用途以及它们在实际编程中的应用。 1. 工厂模式:这是最基础的设计模式之一,属于...

    [浪曦原创]JAVA设计模式 第2讲 单态模式和简单工厂模式(jzkangta).rar

    在这个压缩包中,我们重点关注两种模式:单例模式和简单工厂模式。 单例模式是一种创建型设计模式,其核心特点是保证一个类只有一个实例,并提供一个全局访问点。在Java中实现单例,通常有懒汉式、饿汉式和双重检查...

    C# 2048 工厂方法模式

    《C#实现2048游戏的工厂方法模式解析》 在编程领域,设计模式是解决常见问题的可重用方案,它们代表了在特定上下文中经过时间验证的最佳实践。工厂方法模式是其中的一种,它提供了一种创建对象的抽象方式,使得具体...

    [原创][创建型模式] 简单工厂、工厂方法、抽象工厂三种设计模式的理解

    NULL 博文链接:https://jacky-dai.iteye.com/blog/2296369

    抽象工厂模式 - PHP版

    抽象工厂模式是一种高级的设计模式,属于创建型模式,它提供了一种创建对象族的方法,而无需指定其具体的类。在PHP中,抽象工厂模式尤其适用于那些需要创建一系列相关或相互依赖的对象,而又不希望硬编码具体类名的...

    设计模式——原版的设计模式

    抽象工厂模式提供了一组接口,用于创建相关或依赖对象的家族,而无需指定具体类;建造者模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示;原型模式通过复制已有对象来创建新对象。 2. **...

    设计模式之PHP项目应用(简单工厂模式:计算器)

    1)程序功能:用简单工厂模式实现计算器功能,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/45692995。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目应用...

    JavaScript中的工厂模式:构建灵活的对象创建机制

    通过本文的介绍,你应该能够理解工厂模式的基本概念,掌握在JavaScript中实现工厂模式的方法,并能够在实际项目中应用这一模式来构建灵活的对象创建机制。 通过本文的介绍,你应该能够理解工厂模式的重要性,掌握在...

    [浪曦原创]JAVA设计模式 第4讲 抽象工厂(jzkangta)

    **抽象工厂模式**是软件设计模式中的一个关键概念,它属于创建型模式,主要用于提供创建对象的接口,使得客户端能够创建一系列相关或相互依赖的对象,而无需指定它们的具体类。在Java编程中,抽象工厂模式尤其适用于...

    asp.net 简单工厂模式和工厂方法模式之论述

    ***中简单工厂模式与工厂方法模式的论述主要涉及以下知识点: 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,有一个专门负责创建对象的工厂类,根据客户端传入的参数,...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 ...

    设计模式.pdf

    工厂方法模式通过子类化对扩展是开放的,但对修改原工厂类是封闭的,这符合开闭原则。抽象工厂模式则适合于提供一系列产品族,且产品的种类变动不频繁,产品之间有较强的依赖关系。 在C++中实现这些工厂模式时,...

    Java设计模式——工厂设计模式详解

    1. 简单工厂(Simple Factory):简单工厂是工厂模式三种形态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。 简单工厂的优点是可以动态决定应该实例化哪...

    head first 设计模式原料工厂C++实现

    在给定的文件中,我们看到一个名为“原料工厂”的实现,这是简单工厂模式的一个例子,用于创建披萨的各个组成部分。下面我们将详细探讨这个原料工厂以及与之相关的知识点。 **简单工厂模式**: 简单工厂模式是设计...

    Csharp设计模式源码

    在工厂模式中,我们创建一个工厂类,该类负责生产特定类型的对象,而不是让客户端直接实例化对象。这有助于隐藏对象创建的复杂性,并允许系统在不影响客户端的情况下更改产品类型。 2. 单例模式:确保一个类只有一...

    软件设计精要与模式原代码

    2. **创建型模式**:如单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式主要用于对象的创建,旨在简化实例化过程,提高...

    JavaScript 模式之工厂模式(Factory)应用介绍

    JavaScript工厂模式是一种设计模式,属于对象创建型模式,它的主要目的是为了抽象对象的创建过程,降低对象实例化过程中与具体类的耦合度。在JavaScript中,由于没有类的概念,工厂模式通常通过函数来实现。下面我们...

Global site tag (gtag.js) - Google Analytics