`
dsotbs936
  • 浏览: 37984 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
文章分类
社区版块
存档分类
最新评论

工厂设计模式

阅读更多

为什么要有工厂设计模式?
  • 解耦合
  • 一看见接口就立刻想到工厂模式
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可以任意的更改。
代理设计模式、工厂设计模式是使用最多的

分享到:
评论

相关推荐

    工厂设计模式代码

    工厂设计模式是软件工程中广泛使用的一种创建型设计模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码不直接创建对象,而是通过一个专门的工厂类来负责对象的实例化。这种模式使得系统在面对产品扩展时...

    工厂设计模式简单实例

    工厂设计模式是面向对象编程中的一种经典设计模式,它的主要目的是为了解耦对象的创建与使用,使得系统在不关心具体实现的情况下能够灵活地创建所需的对象。在这个名为"工厂设计模式简单实例"的资料中,我们可以期待...

    抽象工厂设计模式抽象工厂设计模式

    抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式

    ios 简单工厂设计模式

    简单工厂设计模式是其中一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这个接口就像一个工厂,根据输入条件生产不同类型的实例。 简单工厂模式的核心在于一个“工厂”类,这个类...

    C#工厂设计模式简单实例

    C#工厂设计模式简单实例——计算器 public class Factory { //创建一个静态方法 public static Operation CreateOper(int a, int b, string oper) { //创建一个Operation对象 Operation op = null; switch ...

    C#简单登录演示抽象工厂设计模式

    抽象工厂设计模式是其中一种创建型设计模式,它提供了一种创建对象家族的方法,这些对象来自同一个接口但属于不同的类。在这个“C#简单登录演示抽象工厂设计模式”的案例中,我们将深入探讨如何在C#中应用这个模式来...

    简单工厂设计模式

    ### 简单工厂设计模式概述 简单工厂模式(Simple Factory Pattern)是设计模式中较为基础的一种模式,属于创建型模式。它通过提供一个统一的接口来创建一系列相关的或相互依赖的对象,而无需指定具体类。 #### ...

    java 抽象工厂设计模式 案例

    Java抽象工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,一个工厂接口用于创建一系列相关的或相互依赖的对象,而无需指定它们的具体类。这种模式让代码与具体实现解耦,使得...

    设计模式资料之工厂设计模式

    在给定的“设计模式资料之工厂设计模式”中,我们主要关注的是工厂设计模式,这是一种创建型设计模式,它提供了创建对象的最佳方式。在这个资料中,可能会详细解释工厂模式的概念、目的以及如何在实际编程中应用。 ...

    工厂方法与抽象工厂设计模式

    工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式

    设计模式:单例设计模式(全部实现方式)工厂设计模式,抽象工厂模式

    单例设计模式、工厂设计模式和抽象工厂模式是常见的软件开发设计模式。这些设计模式提供了一些有用的思想和实现方式,可以帮助开发人员在设计和实现复杂的软件系统时,更加灵活和高效地进行编程。 单例设计模式是一...

    工厂设计模式附加对象池说明

    本资源包含两部分:工厂设计模式和对象池的设计与实现,主要面向Java开发者。 首先,我们来深入理解工厂设计模式。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露创建逻辑,同时允许...

    Java 工厂设计模式例题

    例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式

    工厂设计模式总结

    工厂设计模式是面向对象设计中的一种创建型模式,它的主要目的是为了解耦对象的创建过程,使得客户端代码不再直接通过new关键字创建对象,而是通过一个工厂类来获取所需的对象。这样做的好处在于,当需要添加新的...

    java设计模式中最简单的工厂设计模式的实例

    工厂设计模式是其中最基础且常用的一种,它属于创建型设计模式,主要用于对象的创建。本实例将深入讲解工厂设计模式的概念、结构以及如何在实际项目中应用。 ### 工厂设计模式概述 工厂设计模式的核心思想是定义一...

    java工厂设计模式之简单工厂

    **Java工厂设计模式之简单工厂** 简单工厂设计模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个静态方法获取所需的具体产品,而无需了解这些产品的具体实现。这种模式的主要目的是将...

    Seahe工厂设计模式源码 SeaherGongChangMoShi.rar

    《工厂设计模式详解——以Seahe为例》 工厂设计模式是软件工程中一种常见的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂设计模式中,一个工厂类负责创建对象,而客户端则不再直接实例化对象,而是通过...

    三种工厂设计模式和两种单例模式

    在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...

    java工厂设计模式.doc

    【工厂设计模式】是软件开发中常用的设计模式之一,它主要解决的是在代码中如何创建对象的问题,使得创建对象的过程更加灵活,同时也降低了代码之间的耦合。工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和...

Global site tag (gtag.js) - Google Analytics