`
jonathan_chen
  • 浏览: 2286 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java设计模式教程 - Java设计模式 - 工厂模式

阅读更多
工厂模式是一种创建型模式,因为此模式提供更好的途径去创建对象。
在工厂模式里,我们不用向客户端暴露创建逻辑而能创建对象。
例子
下面展示如何使用工厂模式去创建对象。
该工厂模式将创建形状的对象,比如圆、长方形。
首先我们设计一个表示形状(Shape)的接口。
public interface Shape {
   void draw();
}

接着我们创建具体类实现该接口。
以下是Rectangle.java的代码
public class Rectangle implements Shape {
   @Override
   public void draw() {
      System.out.println("Inside Rectangle::draw() method.");
   }
}

Square.java
public class Square implements Shape {

   @Override
   public void draw() {
      System.out.println("Inside Square::draw() method.");
   }
}

Circle.java
public class Circle implements Shape {

   @Override
   public void draw() {
      System.out.println("Inside Circle::draw() method.");
   }
}

工厂模式的核心是工厂类。以下代码展示如何给Shape对象创建工厂类。
ShapeFactory类基于传入getShape()方法的字符串类型而创建Shape对象。如果字符串值是CIRCLE,它就创建一个Circle对象。
public class ShapeFactory {
  
   //use getShape method to get object of type shape 
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }    
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      return null;
   }
}

以下代码包含main方法,而它通过传递形状的type信息而使用工厂类去取得具体类的对象。
public class Main {

   public static void main(String[] args) {
      ShapeFactory shapeFactory = new ShapeFactory();

      //get an object of Circle and call its draw method.
      Shape shape1 = shapeFactory.getShape("CIRCLE");

      //call draw method of Circle
      shape1.draw();

      //get an object of Rectangle and call its draw method.
      Shape shape2 = shapeFactory.getShape("RECTANGLE");

      //call draw method of Rectangle
      shape2.draw();

      //get an object of Square and call its draw method.
      Shape shape3 = shapeFactory.getShape("SQUARE");

      //call draw method of circle
      shape3.draw();
   }
}

以上代码生成以下结果。

Inside Circle::draw() method.
Inside Rectangle::draw() metod.
Inside Square::draw() metod.
分享到:
评论

相关推荐

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    java设计模式----抽象工厂模式

    java设计模式----抽象工厂模式,简单工厂模式代码 代码内部

    Java设计模式----通俗易懂版

    Java设计模式是软件工程中的一种重要思想,它总结了在解决特定问题时,程序员们反复使用的一些最佳实践和解决方案。这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者...

    java设计模式----建造者模式

    java设计模式------------------------------------建造者模式

    java设计模式--工厂模式

    Java设计模式中的工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,从而提高了代码的可扩展性和可维护性。在HeadFirst...

    JAVA设计模式--程序设计--反射--注解--泛型

    Java设计模式、程序设计、反射、注解和泛型是Java开发中的核心概念,它们各自在不同的场景下发挥着重要作用,构建出高效、可维护的软件系统。 首先,Java设计模式是面向对象编程中的一种最佳实践,是解决常见问题的...

    JAVA设计模式例程-策略模式

    Java设计模式是软件开发中的重要概念,它们是解决常见问题的成熟模板,使得代码更加可复用、可维护。在众多的设计模式中,策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在这个...

    JAVA设计模式例程-工厂模式-1

    这个名为"JAVA设计模式例程-工厂模式-1"的压缩包文件提供了一个关于工厂模式的实例,可以帮助学习者更好地理解和应用这个模式。 工厂模式的核心思想是提供一个创建对象的接口,但让实现延迟到子类去做,这样做的...

    java设计模式--迭代器模式源码

    java设计模式--迭代器模式,理解这个例子就完全理解迭代器啦

    JAVA设计模式---100%推荐

    这篇名为"JAVA设计模式---100%推荐"的资源,可能是对Java设计模式的深入解析,旨在帮助开发者更好地理解和应用这些模式。 设计模式通常分为三类:创建型、结构型和行为型。创建型模式涉及对象的实例化过程,如单例...

    Java设计模式笔记-尚硅谷

    Java设计模式笔记-尚硅谷

    java-设计模式-状态模式-模拟审批流程-二级审批 完整代码

    总之,这个Java实现展示了如何利用设计模式来处理复杂的审批流程。状态模式在这里发挥着关键作用,它将审批流程的各个阶段抽象为独立的类,使得系统可以根据审批状态的变化灵活地改变其行为。这种设计思路对于构建...

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

    java与设计模式--通俗易懂的介绍

    Java 与设计模式是软件开发中的重要主题,它们旨在提高代码的可维护性、灵活性和重用性。设计模式是对在软件设计中经常出现的问题及其解决方案的一种通用、可复用的描述。本篇将通俗易懂地介绍几种常见的设计模式,...

    设计模式教程-Java设计模式

    Java设计模式教程旨在帮助开发者理解和应用这些模式,以提升软件开发的专业性和质量。 在Java设计模式中,我们可以将其大致分为三类:创建型模式、结构型模式和行为型模式。 1. 创建型模式: - 单例模式:保证一...

    JAVA设计模式 代码-图解

    ### JAVA设计模式 代码-图解 #### 1. 设计模式概述 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它们是经过验证的设计经验总结,可以帮助开发者更好地组织代码,提高软件的可维护性和扩展性。...

    JAVA设计模式例程-工厂模式-2

    工厂模式是设计模式中的一种,尤其在Java中应用广泛。本文将深入探讨Java中的工厂模式,以及如何通过实例来理解它的应用。 工厂模式属于创建型设计模式,它的主要目标是提供一个接口,用于创建相关或依赖对象的家族...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

    JAVA设计模式例程-代理模式

    在这个"JAVA设计模式例程-代理模式"的压缩包中,我们可以深入学习如何在Java中实现这一模式。 1. **代理模式的基本概念** 代理模式的核心思想是为一个目标对象创建一个代理对象,代理对象在客户端和目标对象之间起...

Global site tag (gtag.js) - Google Analytics