`
windy2coast
  • 浏览: 55593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

工厂模式经典例子

    博客分类:
  • Java
阅读更多

package org.lxh.demo ;
import java.io.* ;
import java.util.* ;
interface Fruit
{
 // 生长
 public void grow() ;
 // 采摘
 public void pick() ;
}
class Apple implements Fruit
{
 public void grow()
 {
  System.out.println("苹果在生长。。。 ") ;
 }
 public void pick()
 {
  System.out.println("摘苹果。。。") ;
 }
};
class Orange implements Fruit
{
 public void grow()
 {
  System.out.println("橘子在生长。。。 ") ;
 }
 public void pick()
 {
  System.out.println("摘橘子。。。") ;
 }
};
class Cherry implements Fruit
{
 public void grow()
 {
  System.out.println("樱桃在生长。。。 ") ;
 }
 public void pick()
 {
  System.out.println("摘樱桃。。。") ;
 }
};

class WaterMelon implements Fruit
{
 public void grow()
 {
  System.out.println("西瓜在生长。。。") ;
 }
 public void pick()
 {
  System.out.println("摘西瓜。。。") ;
 }
};

class Banana implements Fruit
{
 public void grow()
 {
  System.out.println("香蕉在生长。。。 ") ;
 }
 public void pick()
 {
  System.out.println("摘香蕉。。。") ;
 }
};

class DD implements Fruit
{
 public void grow()
 {
  System.out.println("DD。。。 ") ;
 }
 public void pick()
 {
  System.out.println("摘DD。。。") ;
 }
};

class Factory
{
 public static Fruit getFruitInstance(String type)
 {
  Fruit f = null ;
  // 通过Class类完成
  try
  {
   f = (Fruit)Class.forName(type).newInstance() ;
  }
  catch (Exception e)
  {
   System.out.println(e) ;
  }
  return f ;
 }
};

// 定义一个新类,此类可以从键盘输入数据
class InputData
{
 BufferedReader buf = null ;
 public InputData()
 {
  buf = new BufferedReader(new InputStreamReader(System.in)) ;
 }
 public String getString()
 {
  String str = null ;
  try
  {
   str = buf.readLine() ;
  }
  catch (Exception e)
  {
  }
  return str ;
 }
};

class Init
{
 public static Properties getPropertiesInit()
 {
  Properties p = new Properties() ;
  try
  {
   p.loadFromXML(new FileInputStream("lxh.xml")) ;
  }
  catch (Exception e)
  {
  }
  return p ;
 }
};

public class FactoryDemo06
{
 public static void main(String args[])
 {
  Properties p = new Properties() ;
  p = Init.getPropertiesInit() ;
  System.out.println(p) ;
  
  // 加入一个可以从键盘输入数据的类
  System.out.print("输入要使用的子类代码:") ;
  String code = new InputData().getString() ;
  System.out.println(p.getProperty(code)) ;
  Fruit f = Factory.getFruitInstance(p.getProperty(code)) ;
  if(f!=null)
  {
   f.grow() ;
   f.pick() ;
  }
  else
  {
   System.out.println("没有发现这个类型。") ;
  }
 }
};

 

lxh.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>MLDN --&gt; LXH</comment>
<entry key="b">org.lxh.demo.Banana</entry>
<entry key="a">org.lxh.demo.Apple</entry>
<entry key="o">org.lxh.demo.Orange</entry>
<entry key="c">org.lxh.demo.Cherry</entry>
<entry key="d">org.lxh.demo.DD</entry>
</properties>

分享到:
评论

相关推荐

    qt工厂模式例子qt简单工程模式源码

    5. Qt工厂模式例子 6. 简单工厂模式 部分源码实例: // 奔驰工厂 class BenzFactory : public AFactory { public: ICar* CreateCar() { return new BenzCar(); } }; // 宝马工厂 class BmwFactory : public A...

    工厂模式 经典实战案例 一看就能学会工厂模式

    这里的"经典实战案例"很可能是指工厂方法模式,它比简单工厂模式更加灵活,允许子类决定实例化哪一个产品类。工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到...

    三层架构+工厂模式(经典案例)带图,带说明

    结合提供的压缩包文件"FactoryDesign",我们可以期待这个案例会详细解释如何在三层架构中运用工厂模式来设计和实现业务逻辑。这可能包括创建一个工厂类,用于根据特定条件(如用户请求)生成相应的业务对象,以及...

    工厂模式(2016手机案例)

    在这个"工厂模式(2016手机案例)"中,我们将探讨如何运用工厂模式来模拟2016年手机产品的生产过程,以及当年手机的一些主要特性。 首先,工厂模式的核心思想是通过一个共同的接口或抽象类来创建不同的产品实例。在...

    一个简单的工厂模式例子

    java工厂模式一个简单的工厂模式例子工厂模式简单代码案例,仅供参考。java工厂模式一个简单的工厂模式例子工厂模式简单代码案例,仅供参考。java工厂模式一个简单的工厂模式例子工厂模式简单代码案例,仅供参考。...

    简单工厂模式、工厂模式、抽象工厂模式案例(C++实现)

    在软件工程中,设计模式是解决常见问题的模板或最佳实践。工厂模式是其中最常用的一种,它提供了创建对象的最佳方式。在这个压缩包中,包含了三种工厂模式的C++实现:简单工厂模式、工厂方法模式以及抽象工厂模式。...

    Java中工厂模式案例

    在软件设计模式中,工厂模式是一种非常基础且实用的创建型模式,它的主要目标是将对象的创建过程封装起来,使得代码更加灵活,同时也降低了对象间的耦合度。工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和...

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    在给定的资源中,"设计模式交流之工厂模式-shannonxu-2014-10-24.pptx"可能是详细的PPT讲解,涵盖了这些模式的概念、结构、优缺点以及实际应用案例。而"Factory"可能是一个代码示例,展示了工厂模式的具体实现,包括...

    设计模式--工厂模式java例子

    这里我们主要探讨基于Java的例子,即简单工厂模式。 简单工厂模式的核心思想是定义一个工厂类,这个类负责创建对象,而客户端代码不再直接创建对象,而是调用工厂类的静态方法来获取所需对象。这样做可以隔离类的...

    Java 简单工厂模式例子

    在给定的"Java 简单工厂模式例子"中,可能包含如下代码结构: ```java // Product(产品)接口或抽象类 public interface Computer { void start(); } // ConcreteProduct(具体产品)类 public class Laptop ...

    工厂模式例子代码

    在这个"工厂模式例子java代码"中,我们可以预见到它会展示如何在Java编程语言中实现工厂模式。Java作为面向对象的语言,非常适合用来演示这种模式。下面我们将深入探讨工厂模式的几个核心概念和组成部分: 1. **...

    设计模式之简单工厂模式案例

    简单工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个工厂类负责创建所有相关的对象,而客户端只需要知道具体的产品类型,无需了解如何创建这些对象的细节。这种...

    工厂模式的具体例子,工厂模式的具体例子

    工厂模式是一种常用的设计模式,它在软件开发中起到了抽象创建对象过程的作用,使得代码更加灵活,易于扩展...对于想要学习设计模式的开发者来说,这是一个很好的实践案例,能够帮助理解如何在实际项目中应用工厂模式。

    Java设计模式经典例子

    本篇文章将深入探讨几个Java设计模式的经典例子,包括它们的原理、应用场景以及如何在实际项目中实施。 1. 单例模式:单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过双重检查锁定(Double-...

    工厂方法模式应用案例

    通过学习这两个案例,你可以深入理解如何在实际项目中运用工厂方法模式,以及它如何帮助你更好地组织代码,提高软件设计的质量。此外,还可以结合其他设计模式,如策略模式、单例模式等,进行组合使用,以应对更复杂...

    PHP 简单工厂模式例子

    在这个例子中,`Animal`是产品接口,`Dog`和`Cat`是具体产品,而`AnimalFactory`是工厂类。客户端代码可以通过调用`AnimalFactory::createAnimal()`方法来获取所需的动物对象,而无需关心对象的创建细节。 ### 4. ...

    软件设计模式经典案例讲解

    本篇文章将深入探讨几种经典的设计模式:模板方法模式、外观模式、代理模式、装饰器模式、桥模式、工厂方法模式以及组合模式。 首先,模板方法模式(Template Method Pattern)是行为设计模式的一种,它定义了操作...

    java23种设计模式经典案例

    在这个"java23种设计模式经典案例"中,我们将深入探讨这些模式的细节及其在实际项目中的应用。 1. 创建型模式(Creational Patterns): - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点...

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...

    JAVA 设计模式 工厂模式 代理模式 迭代模式 责任链模式 源码

    以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...

Global site tag (gtag.js) - Google Analytics