1、下面的代码是可以运行的。
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 Factory{
public static Fruit getFruitInstance(String type){
Fruit f=null;
try{
f=(Fruit) Class.forName(type).newInstance();
}catch(Exception e){
System.out.println(e);
}
return f;
}
}
// 定义一个新类,此类可以从键盘输入数据
class Tio{
BufferedReader bf=null;
public Tio(){
bf=new BufferedReader(new InputStreamReader(System.in));
}
public String getin(){
String str=null;
try{
str=bf.readLine();
}catch(Exception e){
System.out.println(e);
}
return str;
}
}
//读文件的类
class Init{
public static Properties getInitStance()throws Exception{
Properties ps=new Properties();
ps.loadFromXML(new FileInputStream(new File("jack.xml")));//jack.xml是个绝对路径,可以任意写。
return ps;
}
}
public class TestFactory {
public static void main(String[] args)throws Exception{
Properties ps=new Properties();
ps=Init.getInitStance();
System.out.println(ps);
// 加入一个可以从键盘输入数据的类
System.out.println("输入你想要的代号:");
String code=new Tio().getin();
Fruit fru=Factory.getFruitInstance(ps.getProperty(code));
if(fru!=null){
fru.grow();
fru.pick();
}else {
System.out.println("没有发现这个类!");
}
}
}
2、下面是配置文件,配置文件的目的是,可以动态的修改(添加子类等等),上面的类可以直接读文件,就可以了。
import java.util.*;
import java.io.*;
public class DemoXML{
public static void main(String[] args)throws Exception{
Properties ps=new Properties();
//下面是生成文件
/*
ps.setProperty("a","Apple");//这里的Apple是类,要是有包的话要写成:包名+类名。
ps.setProperty("o","Orange");
ps.setProperty("c","Cherry");
// 下面的两个写法都可以生成jack.xml文件
// ps.storeToXML(new FileOutputStream("jack.xml"), "要生成的文件!") ;
ps.storeToXML(new FileOutputStream(new File("jack.xml")), "要生成的文件!") ;
*/
//下面是读文件。
ps.loadFromXML(new FileInputStream(new File("jack.xml")));
System.out.println(ps) ;
}
}
分享到:
相关推荐
Java设计模式中的工厂模式是一种创建型...总结来说,工厂模式是Java设计模式中的重要一环,它有效地解决了对象创建的问题,提高了代码的可维护性和可扩展性。理解并熟练运用工厂模式,对于提升软件设计质量至关重要。
本资源主要关注两种经典的设计模式:工厂模式和单例模式。这两种模式在实际编程中非常常见,尤其对于提高代码的可扩展性和可维护性至关重要。 ### 工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的...
总结来说,"JAVA抽象工厂模式--演示代码"将展示如何在Java中应用这一模式,通过创建和使用抽象工厂,来实现对象族的动态创建,同时保持代码的松耦合和可扩展性。测试用例则会验证这些功能是否按照预期工作。
### 设计模式实验报告——工厂模式 #### 一、引言 工厂模式是软件工程中常用的创建型设计模式之一,其主要目的是为了封装创建过程,将创建对象的任务交给专门的工厂类来完成。本报告主要介绍了三种不同类型的工厂...
总结来说,这个项目可能包含以下关键知识点:使用工厂模式创建对象,利用反射动态执行代码,实现安全的登录功能,进行高效的查询操作,以及应用简单分页以优化性能。同时,通过三层架构来组织代码,确保了良好的可...
总结一下,抽象工厂模式在Java中的应用可以帮助我们: 1. 分离产品对象的创建与使用,提高代码的可读性和可维护性。 2. 支持产品族的创建,允许扩展新的产品类别。 3. 提供一套标准的接口,使得客户端可以独立于...
### 设计模式——工厂模式与单例模式 #### 一、引言 设计模式是软件工程领域中的一个重要概念,它代表了在特定情况下解决常见问题的最佳实践。在本篇文章中,我们将深入探讨两种广泛使用的软件设计模式:工厂模式...
总结而言,工厂模式是一种非常实用的设计模式,尤其适合于需要动态选择不同实现的情况。简单工厂模式适合于产品种类不多且未来扩展可能性较小的场景;而工厂方法模式则更适合于需要支持多种不同类型产品的复杂应用...
工厂模式是设计模式中的一种,属于创建型模式,它提供了一种封装对象创建过程的方法,使得创建对象的过程与使用对象的代码分离,从而提高了代码的灵活性和可扩展性。 工厂模式的核心思想是通过一个工厂类来负责创建...
在这个"北风网-设计模式-简单工厂模式ppt"中,可能包含了以下内容: 1. **模式定义**:简单工厂模式的核心概念,解释其工作原理和适用场景。 2. **角色介绍**:包括产品接口(Product)或抽象类,具体产品类...
工厂模式是设计模式中的一种,它在软件工程中扮演着重要的角色,特别是在处理不同类的实例化时。本篇我们将深入探讨OC中的工厂模式及其在处理不同通知时的应用。 ### 1. 工厂模式简介 工厂模式是一种创建型设计模式...
【工厂模式】是一种创建型...总结来说,简单工厂模式是设计模式中的基础,它通过提供一个中心化的创建对象的机制,使得代码更加灵活,易于扩展。对于初学者来说,理解并掌握这一模式是深入学习其他设计模式的重要步骤。
- **工厂模式**:提供创建对象的接口,隔离对象的创建和使用。 - **装饰器模式**:动态地给一个对象添加新的行为或责任。 9. **垃圾回收(GC)** - **内存区域划分**:堆、栈、方法区、本地方法栈等。 - **垃圾...
### 设计模式概述——简单工厂模式详解 #### 一、设计模式概览 设计模式是在软件工程领域中,为了解决特定问题而总结出来的一系列经验法则和最佳实践。通过运用设计模式,开发者可以在面对常见问题时,快速找到...
### 工厂模式详解 #### 一、工厂模式概述 工厂模式是一种常用的设计模式,它属于创建型模式的一种。在软件工程中,工厂模式的主要目的是封装对象的创建过程,并允许根据不同的条件创建不同类型的对象。这有助于...
- 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,无需指定它们的具体类。 - 建造者模式:将复杂对象的构建与其表示分离,使同样的构建过程能创建不同的表示。 - 原型模式:通过复制已有对象来创建...
下面给出了简单的工厂模式和工厂方法模式的示例代码: ```java // 定义水果接口 public interface Fruit { void get(); } // 苹果实现类 public class Apple implements Fruit { public void get() { System....
- 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式:将复杂对象的构建与其表示分离,使得相同的构建过程可以创建不同的表示。 - 组合模式:允许你将对象组合成树形...