为什么要有工厂设计模式?
• 解耦合
• 一看见接口就立刻想到工厂模式
3.1、代码一
简单工厂设计:
interface Fruit{
public void eat() ;
}
class Apple implements Fruit{
public void eat(){
System.out.println("吃苹果。。。") ;
}
};
class Orange implements Fruit{
public void eat(){
System.out.println("吃橘子。。。") ;
}
};
class Factory{
public static Fruit getInstance(String className){
Fruit f = null ;
if("apple".equals(className)){
f = new Apple() ;
}
if("orange".equals(className)){
f = new Orange() ;
}
return f ;
}
};
public class FactoryDemo01{
public static void main(String args[]){
Fruit f = Factory.getInstance("apple") ;
f.eat() ;
}
};
以上代码虽然完成了基本的工厂设计,但是发现如果现在接口增加了一个子类之后,需要修改工厂。
3.2、代码二
以上代码如果增加了一个子类要修改工厂,那么下面使用Class类完成对象的实例化工作,使用之后,子类可以任意增加,而不用修改工厂类。
interface Fruit{
public void eat() ;
}
class Apple implements Fruit{
public void eat(){
System.out.println("吃苹果。。。") ;
}
};
class Orange implements Fruit{
public void eat(){
System.out.println("吃橘子。。。") ;
}
};
class Factory{
public static Fruit getInstance(String className){
Fruit f = null ;
try{
f = (Fruit)Class.forName(className).newInstance() ;
}catch(Exception e){}
return f ;
}
};
public class FactoryDemo02{
public static void main(String args[]){
Fruit f = Factory.getInstance("Apple") ;
f.eat() ;
}
};
3.3、代码三
应该定义一个配置文件,配置文件之中定义了接口的全部子类,以后直接使用配置文件就可以知道可以使用那些子类。
以后如果要增加子类的时候直接修改配置文件就可以增加子类了。
Properties类:属性操作类。
import java.io.* ;
import java.util.* ;
interface Fruit{
public void eat() ;
}
class Apple implements Fruit{
public void eat(){
System.out.println("吃苹果。。。") ;
}
};
class Orange implements Fruit{
public void eat(){
System.out.println("吃橘子。。。") ;
}
};
class Cherry implements Fruit{
public void eat(){
System.out.println("吃樱桃。。。") ;
}
};
class Factory{
public static Fruit getInstance(String className){
Fruit f = null ;
try{
f = (Fruit)Class.forName(className).newInstance() ;
}catch(Exception e){}
return f ;
}
};
class Init{
public Properties init() throws Exception{
// 读取全部的属性
Properties pro = new Properties() ;
File f = new File("fruit.xml") ;
if(f.exists()){
// 直接读取
pro.loadFromXML(new FileInputStream(f)) ;
}else{
// 设置若干个初始值
pro.setProperty("a","Apple") ;
pro.setProperty("o","Orange") ;
// 把内容保存在文件之中
pro.storeToXML(new FileOutputStream(f),"FRUIT") ;
}
return pro ;
}
};
public class FactoryDemo03{
public static void main(String args[]) throws Exception{
Properties p = new Init().init() ;
System.out.println(p) ;
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)) ;
System.out.print("输入选择的类名称:") ;
String str = buf.readLine() ;
Fruit f = Factory.getInstance(p.getProperty(str)) ;
f.eat() ;
}
};
某一个子类的增加并不会影响程序的运行,程序认的只是key,而具体的value可以任意更改。
最早思路:以上的代码,达到配置文件与程序的相互分离。
现在思路:配置文件只接写在程序中:ANNOTION。EJB 3.0
4、总结
只要是看见了接口,就要考虑工厂,有了工厂,就要考虑扩充子类的情况,扩充了子类就需要考虑到底如何知道所有的子类的完整的包.类名称。
永远记住:最好的程序设计就是:程序只认key,而具体的value可以任意的更改。
代理设计模式、工厂设计模式是使用最多的
分享到:
相关推荐
工厂设计模式是软件工程中广泛使用的一种创建型设计模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码不直接创建对象,而是通过一个专门的工厂类来负责对象的实例化。这种模式使得系统在面对产品扩展时...
工厂设计模式是面向对象编程中的一种经典设计模式,它的主要目的是为了解耦对象的创建与使用,使得系统在不关心具体实现的情况下能够灵活地创建所需的对象。在这个名为"工厂设计模式简单实例"的资料中,我们可以期待...
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
简单工厂设计模式是其中一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这个接口就像一个工厂,根据输入条件生产不同类型的实例。 简单工厂模式的核心在于一个“工厂”类,这个类...
C#工厂设计模式简单实例——计算器 public class Factory { //创建一个静态方法 public static Operation CreateOper(int a, int b, string oper) { //创建一个Operation对象 Operation op = null; switch ...
抽象工厂设计模式是其中一种创建型设计模式,它提供了一种创建对象家族的方法,这些对象来自同一个接口但属于不同的类。在这个“C#简单登录演示抽象工厂设计模式”的案例中,我们将深入探讨如何在C#中应用这个模式来...
### 简单工厂设计模式概述 简单工厂模式(Simple Factory Pattern)是设计模式中较为基础的一种模式,属于创建型模式。它通过提供一个统一的接口来创建一系列相关的或相互依赖的对象,而无需指定具体类。 #### ...
Java抽象工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,一个工厂接口用于创建一系列相关的或相互依赖的对象,而无需指定它们的具体类。这种模式让代码与具体实现解耦,使得...
在给定的“设计模式资料之工厂设计模式”中,我们主要关注的是工厂设计模式,这是一种创建型设计模式,它提供了创建对象的最佳方式。在这个资料中,可能会详细解释工厂模式的概念、目的以及如何在实际编程中应用。 ...
工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式
单例设计模式、工厂设计模式和抽象工厂模式是常见的软件开发设计模式。这些设计模式提供了一些有用的思想和实现方式,可以帮助开发人员在设计和实现复杂的软件系统时,更加灵活和高效地进行编程。 单例设计模式是一...
本资源包含两部分:工厂设计模式和对象池的设计与实现,主要面向Java开发者。 首先,我们来深入理解工厂设计模式。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露创建逻辑,同时允许...
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
工厂设计模式是面向对象设计中的一种创建型模式,它的主要目的是为了解耦对象的创建过程,使得客户端代码不再直接通过new关键字创建对象,而是通过一个工厂类来获取所需的对象。这样做的好处在于,当需要添加新的...
工厂设计模式是其中最基础且常用的一种,它属于创建型设计模式,主要用于对象的创建。本实例将深入讲解工厂设计模式的概念、结构以及如何在实际项目中应用。 ### 工厂设计模式概述 工厂设计模式的核心思想是定义一...
**Java工厂设计模式之简单工厂** 简单工厂设计模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个静态方法获取所需的具体产品,而无需了解这些产品的具体实现。这种模式的主要目的是将...
《工厂设计模式详解——以Seahe为例》 工厂设计模式是软件工程中一种常见的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂设计模式中,一个工厂类负责创建对象,而客户端则不再直接实例化对象,而是通过...
在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...
【工厂设计模式】是软件开发中常用的设计模式之一,它主要解决的是在代码中如何创建对象的问题,使得创建对象的过程更加灵活,同时也降低了代码之间的耦合。工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和...