`
iorit2003
  • 浏览: 141843 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

简单工厂(转)

阅读更多
第一个设计模式:简单工厂

UML示意图:



组成部分

1.  工厂类:产生产品的加工厂

2.  抽象产品:是具体产品的抽象,可以是interface和abstract

3.  具体产品:一个个实实在在的产品

说明:用户多工厂类产生并返回一个产品供用户使用



代码例子:

1. 工厂类

/*

* Created on 2006-11-25

*/

package simplefactory;

/**

* @author Administrator

*/

public class Factory {

    public static IProduct getInstance(int i) throws Exception{

        IProduct product = null;

        switch(i){

        case 1:product = new Product1();break;

        case 2:product = new Product2();break;

        default:throw new Exception("无此对象!");

        }

        return product;

    }

}

2. 抽象产品接口

/*

* Created on 2006-11-25

*/

package simplefactory;



/**

* @author Administrator

*/

public interface IProduct {

    //抽象产品

    boolean login();

}

3. 具体产品1

/*

* Created on 2006-11-25

*/

package simplefactory;



/**

* @author Administrator

*/

public class Product1 implements IProduct {



    /* (non-Javadoc)

     * @see simplefactory.IProduct#login()

     */

    public boolean login() {

        //code is here

        System.out.println("产品1的商业方法,login...");

        return true;

    }

}

具体产品2

/*

* Created on 2006-11-25

*/

package simplefactory;



/**

* @author Administrator

*/

public class Product2 implements IProduct{



    /* (non-Javadoc)

     * @see simplefactory.IProduct#login()

     */

    public boolean login() {

        // TODO Auto-generated method stub

        System.out.println("产品2的商业方法,login...");

        return false;

    }

}

4. 使用

/*

* Created on 2006-11-25

*/

package simplefactory;





/**

* @author Administrator

*/

public class Main {



    public static void main(String[] args) {

        try {

            IProduct product = Factory.getInstance(1);

            product.login();//产品1

            product = Factory.getInstance(2);

            product.login();//产品2

           

            product = Factory.getInstance(3);//没有这个产品,所以得到异常

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

       

    }

}

5. 输出结果

产品1的商业方法,login...

产品2的商业方法,login...

java.lang.Exception: 无此对象!

    at simplefactory.Factory.getInstance(Factory.java:17)

    at simplefactory.Main.main(Main.java:19)

优点:客户端可以动态的创建并得到一个对象,使责任得到了分工。

缺点:工厂类是简单工厂模式的核心,创建并返回静态已知的对象。这样对于扩展性来说是一个阻碍。比如有新的产品加入,则只有在工厂类中加入代码。这违背了开-闭原则。
分享到:
评论

相关推荐

    转换软件格式工厂

    1. **安装与启动**:从提供的“格式工厂2.1.0.0.exe”文件进行安装,安装过程简单,启动后软件界面清晰,操作直观。 2. **选择转换类型**:用户可以根据需要在主界面选择“视频”、“音频”、“图片”等选项,进入...

    反射简单工厂模式工厂模式

    本文将深入探讨"反射"以及两种常见的工厂模式:"简单工厂模式"和"工厂方法模式",并结合提供的文件名称来解析这些概念。 首先,我们来看"反射"。在Java等面向对象语言中,反射是一种强大的工具,它允许程序在运行时...

    格式工厂MP4等其他视频图片格式转换

    下载安装过程简单快捷,只需运行提供的FFSetup3.2.0.1.exe文件即可完成安装。 7. **其他功能**:格式工厂还支持DVD、CD、ISO等光盘媒体的转换和刻录,以及视频抓取、合并、裁剪等功能,是一款综合性的多媒体处理...

    魔影工厂转换必用

    "魔影工厂转换必用"是一款专为视频转换设计的软件,它可以帮助用户将不同格式的视频文件转换成他们需要的格式,以便在各种设备上播放或进行其他用途。这款工具通常具有简单易用的界面,支持多种视频编码和解码技术,...

    格式工厂1.6 万能音频视频转换软件工具

    对于那些希望在转换前对视频进行简单编辑的用户来说,这是一个非常实用的特性。 音频方面,格式工厂1.6同样表现出色。它支持各种音频编码格式,用户可以将高保真的无损音频如FLAC、ALAC转换为更通用的MP3或AAC格式...

    格式工厂 用于文件格式的转换

    只需通过简单的几步操作,即可实现各种格式之间的自由转换,极大地提升了文件处理的便利性。无论你是音频爱好者、视频编辑者还是图片设计师,都可以从中受益。安装文件"FFSetup220.exe"就是格式工厂的安装程序,下载...

    格式工厂(音视频格式转换)

    用户可以通过简单的操作步骤,将不同格式的视频转换为适合手机、平板电脑、智能电视或其他特定设备的格式。此外,它还提供了对高清视频的支持,确保转换后的视频质量尽可能接近原始文件。 2. **音频格式转换**: ...

    格式工厂--转换各种视频、音频格式

    总的来说,"格式工厂"是一款功能全面、操作简单的多媒体转换工具,无论你是想要优化视频质量、压缩音频文件,还是需要处理其他类型的多媒体数据,都能找到相应的解决方案。其强大的转换能力,使得它在日常生活中扮演...

    asp.net 简单工厂模式

    **ASP.NET中的简单工厂模式** 简单工厂模式是一种常见的创建型设计模式,它在ASP.NET开发中也有着广泛的应用。该模式主要用于创建对象,特别是在需要根据特定条件创建不同类型的对象时。简单工厂模式通过一个中心...

    魔影工厂 swf转换利器 全免费

    - **操作简便**:魔影工厂界面友好,操作流程简单直观,即使对技术不熟悉也能轻松上手。 - **批量处理**:用户可以一次性添加多个SWF文件进行转换,节省时间,提高效率。 - **自定义设置**:在转换过程中,用户...

    抽象工厂之数据库转换例子

    这些测试用例可能包括创建数据库连接、执行简单查询、处理异常情况等方面的测试,以确保在不同数据库环境下都能正常工作。 总之,这个抽象工厂的例子展示了如何使用设计模式来解决数据库转换问题,通过创建适应不同...

    格式工厂 视频转换

    3. **视频编辑功能**:在转换前,用户可以对视频进行裁剪、合并、添加水印、调整亮度、对比度等简单编辑,提升视频质量。 4. **批量转换**:用户可以一次性添加多个视频文件进行转换,大大提高了处理效率。 5. **...

    格式工厂视频格式转换工具

    格式工厂作为一款功能强大的视频格式转换工具,为用户提供了简单易用且高效的解决方案。本文将深入探讨格式工厂的主要功能、使用方法以及其在视频格式转换中的应用。 一、格式工厂概述 格式工厂是由中国上海鹏图...

    格式转换工厂

    "格式转换工厂"是一款专为用户设计的全能型音视频转换软件,它的主要功能是帮助用户将各种不同格式的视频和音频文件转换成适合不同设备或平台播放的格式。这款软件以其强大的转换能力、易用的界面和广泛的格式支持...

    格式工厂转换

    除了转换,格式工厂还提供简单的视频编辑功能。用户可以裁剪视频,去除不需要的部分,或者将多个视频片段合并成一个文件。这对于整理个人视频集或者制作混剪视频非常方便。 ### 5. 音频格式转换 格式工厂不仅仅...

    4a转mp3,各种格式之间相互转换,批量转换,格式工厂

    格式工厂提供了简单直观的操作界面,只需选择“音频”类别,然后在下拉菜单中选择MP3作为目标格式,再添加需要转换的M4A文件,最后点击“开始”按钮即可进行转换。 **批量转换的优势** 格式工厂的一大亮点就是支持...

    格式工厂.4.2.0.rar

    而对于图片,它能进行简单的编辑,如调整大小、旋转角度等。这些附加功能使得格式工厂不仅仅是一款转换工具,更是一个轻量级的多媒体处理平台。 在使用格式工厂时,有几个关键点需要注意。一是确保输入文件的完整性...

    格式工厂2.30中文绿色版(多媒体格式转换软件)

    4. **视频合并与剪辑**:除了格式转换,格式工厂还内置了视频合并和剪辑功能,用户可以在转换前对视频进行简单的编辑操作。 5. **设备优化**:考虑到用户可能需要将多媒体文件传输到各种设备上,格式工厂预设了针对...

    格式工厂 视频 音乐 转换成手机可以读取的

    4. **视频编辑功能**:除了基本的转换功能,格式工厂还提供了简单的视频编辑选项。用户可以在转换前裁剪视频长度、调整视频分辨率、改变视频编码质量等,以满足特定需求。 5. **音频提取与合并**:格式工厂还能从...

    创建型模式-简单工厂(非23种之内)

    简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式不被视为GOF的23种经典设计模式之一,但它在实际编程中仍然广泛应用。 在简单工厂模式中,我们定义一个...

Global site tag (gtag.js) - Google Analytics