zoukankan      html  css  js  c++  java
  • 工厂模式

    工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处。

    下面就以一个简单例子来说明工厂模式的设计。

    工厂是生产产品的地方,就以生成产品为例

    1 package factory;
    2 //声明类所需继承的共同接口,也可以是抽象类
    3 public interface Product {
    4 
    5 }
    Product

    定义实现Product的产品类(这里为了简单,在Product类中没有声明方法)

    1 package factory;
    2 
    3 public class ProductA implements Product {
    4     public ProductA() {
    5         System.out.println("ProductA");
    6     }
    7 }
    ProductA
    1 package factory;
    2 
    3 public class ProductB implements Product {
    4     public ProductB() {
    5         System.out.println("ProductB");
    6     }
    7 }
    ProductB

    定义生成产品的工厂类

     1 package factory;
     2 
     3 public class Factory {
     4     //可以在工厂类中添加任何你所需要的逻辑
     5     public static Product create(String str)
     6     {
     7         //生成ProductA
     8         if(str.equalsIgnoreCase("ProductA"))
     9         {
    10             return new ProductA();
    11         }
    12         else
    13             //生成ProductB
    14             if(str.equalsIgnoreCase("ProductB"))
    15             {
    16                 return new ProductB();
    17             }
    18         return null;
    19     }
    20 
    21 }
    Factory

    客户类

    1 package factory;
    2 
    3 public class Client {
    4     public static void main(String[] args) {
    5         //调用Factory的静态方法生成所要的类
    6         Factory.create("productA");
    7         Factory.create("ProductB");
    8     }
    9 }
    Client

    结果:

    这里举得例子比较简单,但是工厂模式的实现可以很复杂。

    除了这个静态的工厂模式外,还有抽象工厂模式,不过实现都是差不多,如果要实现的接口或抽象类只有一个,那么抽象工厂模式跟静态工厂模式是一样的,抽象工厂模式是定义了多个抽象的产品类,而静态工厂模式只定义了一个抽象产品类,抽象工厂模式可以创建多个具体产品类,而由于静态工厂模式只有一个抽象产品类,所以只能由工厂类创建一个具体的产品类的实例。

    
    
    
    由于水平有限,文章中难免有错误的地方,欢迎指出错误或不足之处,共同进步。欢迎转载,转载时请注明出处,谢谢。 ——by CIACs
  • 相关阅读:
    【转】虚拟机 NAT网络设置
    [转载]应用 Valgrind 发现 Linux 程序的内存问题
    Visual Studio 代码格式化插件(等号自动对齐、注释自动对齐等)
    【转】链接任意目录下库文件(解决错误“/usr/bin/ld: cannot find -lxxx”
    C语言实现封装、继承和多态
    美国专利搜索网站
    【转】基于OCS实现高速缓存
    【转】防止网页被搜索引擎、爬虫和网页采集器收录或克隆复制的方法汇总
    [转]机器学习和计算机视觉----数学基础
    [转]机器学习与数据挖掘的学习路线图
  • 原文地址:https://www.cnblogs.com/zhi-hao/p/3981225.html
Copyright © 2011-2022 走看看