经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
Java设计模式之003--工厂模式 - 码农-张员外
来源:cnblogs  作者:码农-张员外  时间:2020/11/9 16:08:26  对本文有异议

工厂模式(Factory PatternJava 中最常用的设计模式之一。 这种类型的设计模式属于创建型模式, 它提供了一种创建对象的最佳方式。

在工厂模式中, 我们在创建对象时不会对客户端暴露创建逻辑, 并且是通过使用一个共同的接口来指向新创建的对象。

工厂模式让调用者与被调用者之间解耦 :当两者发生变化时, 相互之间的影响降到最低, 这个原则体显了项目的可维护性

优点:面向接口编程, 体现了面向对象的思想; 将创建对象的工作转移到了工厂类;

JDK 中的工厂设计模式实例 :
a.java.util.Calendar, ResourceBundle and NumberFormat getInstance() 使用了工厂方法模式;
b.valueOf() 在包装类中, 如Boolean, Integer 也使用了工厂方法模式;
c.Spring框架中, 就是使用了工厂模式来解决对象的创建。

举例说明:创建不同的产品对象,例如手机、电脑。

a.创建接口,以供不同产品去实现

  1. public interface Product {
    public void work();
    }

b.以供不同对象类去实现接口的方法

  1. public class Computer implements Product {
    @Override
    public void work() {
    System.out.println("电脑开始工作...");
    }
    }
  1. public class Phone implements Product {
    @Override
    public void work() {
    System.out.println("手机开始工作...");
    }
    }

c.定义工厂类来创建对象

  1. public class ProductFactory {
    public static Product getProduct(String name) {
    if("phone".equals(name)){        //可将"phone"配置到文件中获取出来
    return new Phone();
    }else if ("computer".equals(name)){  //可将"computer"配置到文件中获取出来
    return new Computer();
    }else{
    throw new ProductException("procuct 不存在!");  //自定义异常ProductException
    }
      }
    }

测试对比:

  1. public class Test {
    public static void main(String[] args) {
    //1 Product p = new Phone();
    //1 p.work();

    //2 工厂模式:让对象之间的强依赖,转化成对工厂对象的依赖
    Product p = ProductFactory.getProduct("phone");  //可将"phone"配置到文件中获取出来
    p.work();
    }
    }

 

原文链接:http://www.cnblogs.com/manong-zhangyuanwai/p/13736087.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号