第一个设计模式:简单工厂
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)
优点:客户端可以动态的创建并得到一个对象,使责任得到了分工。
缺点:工厂类是简单工厂模式的核心,创建并返回静态已知的对象。这样对于扩展性来说是一个阻碍。比如有新的产品加入,则只有在工厂类中加入代码。这违背了开-闭原则。
分享到:
相关推荐
在编程领域,动态代理和工厂方法是两种非常重要的设计模式,它们在软件开发中起着至关重要的作用。这里我们将深入探讨这两种模式,并结合提供的文件名,即“005_Factory_Series_DesignPattern”和“006_Dynamic_...
工厂模式通常有三种实现方式:简单工厂、工厂方法和抽象工厂。在简单工厂中,一个工厂类负责创建所有类型的对象;工厂方法则将对象的创建过程交给子类决定;抽象工厂则用于创建相关或依赖对象的家族,确保这些对象都...
在IT行业中,工厂方法和序列化是两个非常重要的概念,特别是在使用C#和ASP.NET进行开发时。本文将深入探讨这两个主题,以及它们在实际项目中的应用。 首先,我们来看工厂方法。工厂方法是一种设计模式,它提供了一...
在抽象工厂模式中,我们定义一个抽象工厂接口,该接口包含了创建相关或依赖对象的多个工厂方法。然后,为每一种具体的产品(在这个场景中是数据库连接、查询等操作)创建一个具体工厂类,这些工厂类实现了抽象工厂...
制造企业数字化转型与智能工厂设计思路 制造企业数字化转型与智能工厂设计思路是指企业为了适应数字化时代的发展趋势,采取的一系列数字化转型策略和措施,以提高企业的生产效率、降低成本、提高创新能力和竞争力。...
企业数字化转型思路、方法与案例【50页】.pptx 企业数字化转型物流信息化咨询项目规划方案v2.0【117页】.pptx 企业管理信息化项目IT规划咨询报告V2.3【85页】.ppt 制造业仓储信息化总体规划方案【47页】.pptx 制造业...
下面将详细介绍这款软件的功能、使用方法以及在实际操作中的应用技巧。 **一、格式工厂的基本功能** 1. **多格式支持**:格式工厂支持几乎所有的主流媒体格式,如MP4、AVI、FLV、WMV、MP3、WMA、JPEG、PNG等,满足...
本篇文章将详细讲解六个重要的设计模式:抽象工厂、适配器、命令、工厂方法、观察者和代理,以及它们在Java编程中的应用。 1. **抽象工厂(Abstract Factory)**: 抽象工厂模式提供一个创建一系列相关或相互依赖...
本文将深入探讨"反射"以及两种常见的工厂模式:"简单工厂模式"和"工厂方法模式",并结合提供的文件名称来解析这些概念。 首先,我们来看"反射"。在Java等面向对象语言中,反射是一种强大的工具,它允许程序在运行时...
Java静态工厂方法的实例详解 Java静态工厂方法是一种特殊的工厂方法,它可以返回类的实例,而不是通过构造器来获取实例。静态工厂方法通常以valueOf、getInstance、newInstance等命名,具有三个特点:具名、环保、...
- 若遇到无法正常使用的情况,可以参考压缩包内的“无法正常使用请看.txt”文件,可能包含了常见问题解答和解决方法。 总之,格式工厂2.30中文绿色版以其全面的格式支持、丰富的功能和便捷的操作,成为多媒体爱好者...
本文将深入探讨格式工厂的主要功能、使用方法以及其在视频格式转换中的应用。 一、格式工厂概述 格式工厂是由中国上海鹏图计算机科技有限公司开发的一款免费的多格式媒体转换软件。它支持多种类型的文件转换,包括...
### 格式工厂使用说明:新手如何掌握格式转换技巧 #### 一、了解格式工厂:全能多媒体转换器 格式工厂,作为一款功能强大的...通过上述介绍,相信新手也能快速掌握其使用方法,享受高效、便捷的多媒体格式转换体验。
本文将深入探讨“格式转换工厂”的核心功能、使用方法及优势,旨在帮助用户更高效地进行多媒体格式的转换。 一、格式转换工厂的功能概述 1. 多格式支持:格式转换工厂支持各种常见的音频和视频格式,如MP4、AVI、...
本文将详细探讨工厂厂房转让协议书的核心内容,以及在实际操作中需要注意的事项,以期为相关企业提供参考和指导。 首先,必须明确转让标的是工厂厂房转让协议书中的首要内容。转让标的通常包括厂房建筑物、生产用地...
本文将详细介绍格式工厂的功能、使用方法以及其在实际操作中的应用。 一、格式工厂的功能 1. 视频转换:格式工厂支持几乎所有的视频格式转换,包括MP4、AVI、WMV、FLV、3GP等,无论是移动设备还是电脑,都能找到...
数字化转型的战略方法包括领导力转型、智能决策、智能研发、智能管理、智能物流、智能产线、智能车间、智能工厂、运营模式创新、工作资源转型、全方位体验转型、生产模式创新、智能装备、智能产品、智能服务、数据...
为了解决这个问题,我们可以采用三种设计模式:简单工厂、工厂方法和模板方法。 1. **简单工厂**: 简单工厂模式通过一个静态方法返回一个具体类型的实例。这种方法的优点是简洁,可以直接使用泛型方法。但是,它...