0 0

如何用Java写一个简单的工厂模试,和单太~他们有什么区别,能详细说一下这两个有什么用吗5

如何用Java写一个简单的工厂模试,和单太~他们有什么区别,能详细说一下这两个有什么用吗,谢谢
问题补充:
希望大侠能把两个例子写出来,是单态~不是单大
2008年6月23日 09:55

4个答案 按时间排序 按投票排序

0 0

你可能觉得有时候用factory来制造一个单态实例有些混淆。
factry.create() 这是体现工厂模式的方式, 你通过一个工厂得到对象而不是自己构建它
而具体create内部是返回的一个单态的实例的方式,这则是Singleton的方式
例如,返回一个静态变量,或是 spring实现等等

2008年6月25日 18:09
0 0

汗..很久没写过java代码了,写得乱七八糟的,居然出了这么多语法错误.不好意思啊
我再发一遍:
下面是工厂方式的实现方法:

//动物类接口   
interface Animal{   
    //发出声音   
    public class sayHello(){};   
}   
  
//生产动物的工厂类   
class AnimalFactory{   
    public static Animal createDog(){   
        return (Animal)new Dog();   
    }   
}   
  
//狗实现动物接口   
class Dog implements Animal{   
    //狗会汪汪叫   
    public class sayHello(){   
        System.out.println("汪汪");   
    }   
}   
//外国狗实现动物接口   
class EnglishDog implements Animal{   
    //外国狗会Wolf!Wolf!叫   
    public class sayHello(){   
        System.out.println("Wolf!Wolf!");   
    }   
}   

//测试用
class Test(){
    public static void main(String [] args){   
        //从工厂类里面获取一只狗   
        Animal animal1 = AnimalFactory.getDog();   
       animal1.sayHello();   
    }
}

使用工厂模式时,当你在main方法中,想让你生成的那只狗说英文的话,就不用改main方法中的内容.只要在把AnimalFactory中的createDog()方法改为生成一个EnglishDog就可以了.前台的逻辑丝毫不会改变.


以下是单态的实现:


//打印机类
public class Priter{
    //不允许买新打印机
    private Priter(){};

    //已经存在一台打印机
    private static Priter priter=new Priter();

   public static Priter getPriter(){
       return priter;
   }
    //打印内容
    public static print(String content){
        System.out.println(content);
    }
}

//测试类
class Test{
    public static void main(String [] args){
        Priter.getPriter().prite("测试用");
    }
}

这样,当你使用打印机打印content的时候,永远都只会调用类加载时生成的那个priter打印机,而用不着每次打印时都要生成一个新的打印机对象.

2008年6月24日 16:49
0 0

下面是工厂方式的实现方法:

//动物类接口
public interface Animal{
    //发出声音
    public class sayHello(){};
}

//生产动物的工厂类
public class AnimalFactory{
    public static Animal createDog(){
        return (Animal)new Dog();
    }
}

//狗实现动物接口
public class Dog implements Animal{
    //狗会汪汪叫
    public class sayHello(){
        System.out.println("汪汪");
    }
}
//外国狗实现动物接口
public class EnglishDog implements Animal{
    //外国狗会Wolf!Wolf!叫
    public class sayHello(){
        System.out.println("Wolf!Wolf!");
    }
}


public static void main(String [] args){
    //从工厂类里面获取一只狗
    Animal animal1 = AnimalFactory.getDog();
    animal1.sayHello();
}


使用工厂模式时,当你在main方法中,想让你生成的那只狗说英文的话,就不用改main方法中的内容.只要在把AnimalFactory中的createDog()方法改为生成一个EnglishDog就可以了.前台的逻辑丝毫不会改变.


以下是单态的实现:
//打印机类
public class Priter{
    //不允许买新打印机
    private Priter(){};

    //已经存在一台打印机
    private static Priter priter=new Priter();

    //打印内容
    public static print(String content){
        System.out.println(content);
    }
}


这样,当你使用打印机打印content的时候,永远都只会调用类加载时生成的那个priter打印机,而用不着每次打印时都要生成一个新的打印机对象.



上面只是根据个人理解,直接在网页上所写的,如果有错误的话希望楼主多多包涵.

2008年6月24日 11:26
0 0

简单点说:
1、工厂模式就是类的工厂,可以用来实例化不同的类。比如:写一个水果工厂,你可以实例化出苹果,也可以实例化出梨子、桃子……取决与你写的工厂能够生成多少产品。
用工厂来管理类比较方便。
相对工厂来说,当然你也可以通过苹果类来实例出苹果,梨子类来实例化出梨子……。

2、你说的“单太”指“单态”?Singleton,主要作用是保证在Java应用程序中,一个类Class只有一个实例存在,实际是一中单线程操作。同步,可以做到数据统一,节省内存等……

2008年6月23日 10:42

相关推荐

    RabbitMQ Java测试客户端

    这两个文件很可能是Java程序,分别展示了如何使用RabbitMQ Java客户端库来实现消息的发送和接收功能。 发送端代码可能会包含以下关键步骤: 1. 创建ConnectionFactory,这是建立连接的工厂类。 2. 建立Connection,...

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    23种设计模试(java)

    "23种设计模试(java)"这个资源包含了Java语言实现的全部23个经典设计模式,下面将对这些模式进行详细介绍。 1. **创建型模式**(Creational Patterns): - **单例模式(Singleton)**:确保一个类只有一个实例,...

    一个纯JAVA ,API编写的简单学生管理系统,

    一个纯Java API编写的简单学生管理系统,旨在为初学者提供一个基础的实践平台,以理解和掌握Java编程的基本概念以及面向对象设计的原则。在这个系统中,我们可能会看到以下几个核心知识点: 1. **类与对象**:在...

    java源码包2

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    设计模式之从简单工厂到泛型简单工厂

    "设计模式之从简单工厂到泛型简单工厂"这个主题关注的是创建型设计模式,特别是如何逐步改进简单工厂模式以提高其灵活性和可扩展性。简单工厂模式是一种静态工厂方法,用于创建对象,而泛型简单工厂则是对其的一种...

    java源码包3

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    java2年工作经验简历_java简历.doc

    在这段时间里,他们通常会掌握以下几个关键的知识点: 1. **基础语法与核心概念**:掌握Java的基础语法,包括数据类型、运算符、流程控制语句等。理解面向对象编程(OOP)的概念,如封装、继承、多态,并能够设计和...

    抽线工厂的Java实现

    接着,创建两个具体工厂类,分别实现这个接口: ```java public class ConcreteFactory1 implements AbstractFactory { @Override public ProductA createProductA() { return new ProductA1(); } @Override ...

    JAVA上百实例源码以及开源项目源代码

    /mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    /mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的...

    数据集-使用java开发的一个简单数据库实现-优质项目分享.zip

    描述中的“数据库 数据集_使用java开发的一个简单数据库实现_优质项目分享”进一步确认了项目的核心内容,即用Java创建一个数据库系统,并且被标记为优质项目,这可能意味着它具有良好的代码结构、清晰的文档和实用...

    最近5年133个Java面试问题列表

    这是因为JMM(Java内存模型)允许这些类型的读取操作被拆分为两个独立的操作来进行。 - 例如,假设一个线程正在更新一个`volatile long`变量,而另一个线程正在读取该变量。如果第一个线程还没有完成更新操作,第二...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    /mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的...

    java c开发测试相关的面试题

    在IT行业中,Java和C语言是两种非常重要的编程语言,广泛应用于软件开发和系统级编程。对于想要从事这两种语言的开发或测试工作的人来说,掌握相关的笔面试知识点至关重要。本资料包包含了丰富的Java、C以及与开发和...

    java源码包4

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    Java面试代码与编程题

    Java面试是评估程序员技术能力的重要环节,而Java面试代码与编程题则是衡量候选人对语言掌握程度、解决问题能力和逻辑思维的关键标准。以下是一些基于Java面试的常见知识点,这些知识点不仅适用于面试,也是日常开发...

    基于Java的两个通用安全模块的设计与实现(源代码+论文).rar

    标题中的“基于Java的两个通用安全模块的设计与实现”表明这是一个关于Java编程的项目,重点关注的是安全性方面。在Java中,安全模块通常涉及到访问控制、数据加密、防止注入攻击、安全网络通信等核心领域。这个设计...

    阿里巴巴 java笔试 试题 有两份

    这两份题目,"阿里巴巴java笔试试题.doc"和"2010校园笔试.doc",可能包含了阿里巴巴在招聘过程中对Java程序员所需掌握的基础知识、编程能力、算法理解以及实际问题解决能力的考察。 首先,Java基础是必不可少的知识...

Global site tag (gtag.js) - Google Analytics