<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              频道栏目
              首页 > 程序开发 > 软件开发 > Java > 正文
              设计模式学习之工厂模式实例解析
              2018-07-27 13:52:28         来源£º咸鱼塘  
              收藏   我要投稿

              简介

              工厂模式是我们最常用的实例化对象模式了£¬是用工厂方法代替new操作的一种模式¡£著名的Jive论坛 ,就大量使用了工厂模式£¬工厂模式在Java程序系统可以说是随处可见¡£因为工厂模式就相当于创建实例对象的new£¬我们经常要根据类Class生成实例对象£¬如A a=new A() 工厂模式也是用?#21019;?#24314;实例对象?#27169;?#25152;以以后new时就要多个心眼£¬是否可以考虑使用工厂模式£¬虽然这样做£¬可能多做一些工作£¬但会给你系统带来更大的可扩展?#38498;?#23613;量少的修改量¡£

              工厂模式和简单工厂的区别

              我们在简单工厂中可以发现£¬在我们需要添加一个新的工厂的时候需要修改原来的选择?#31181;§£?#36825;违背了类的开放?#38498;?#23553;闭性原则£¬所以对简单工厂进一步抽象可得工厂模式¡£

              简单工厂链接

              工厂模式模块(Demo:计算器)

              运算类

              public abstract class Operation {
                  public double number_A = 0;
                  public double number_B = 0;
                  public abstract double GetResult();
              }
              class OperationAdd extends Operation{
              
                  @Override
                  public double GetResult() {
                      return number_A+number_B;
                  }
              
              }
              class OperationSub extends Operation{
              
                  @Override
                  public double GetResult() {
                      return number_A-number_B;
                  }
              
              }
              class OperationMul extends Operation{
              
                  @Override
                  public double GetResult() {
                      return number_A*number_B;
                  }
              
              }
              class OperationDiv extends Operation{
              
                  @Override
                  public double GetResult() {
                      if(number_B==0)
                      {
                          System.out.println("被除数不能为0");
                          return -1;
                      }
                      return number_A/number_B;
                  }
              
              }

              工厂接口

              public interface Factory {
                  public Operation GetOperation();
              }

              工厂实现

              class OperationAddFactory implements Factory{
              
                  @Override
                  public Operation GetOperation() {
                      return new OperationAdd();
                  }
              }
              
              class OperationDivFactory implements Factory{
              
                  @Override
                  public Operation GetOperation() {
                      return new OperationDiv();
                  }
              }
              
              class OperationMulFactory implements Factory{
              
                  @Override
                  public Operation GetOperation() {
                      return new OperationMul();
                  }
              }
              
              class OperationSubFactory implements Factory{
              
                  @Override
                  public Operation GetOperation() {
                      return new OperationSub();
                  }
              }
              

              使用方法

              public class Main {
                  public static void main(String[] args) {
                      OperationAddFactory operationAddFactory = new OperationAddFactory();
                      Operation operation = operationAddFactory.GetOperation();
                      operation.number_A=2;
                      operation.number_B=1;
                      System.out.println(operation.GetResult());
                  }
              }
              

              可以看出其与简单工厂的区别就在于取消了?#31181;§£?#32780;是选用了新创建一个类£¬这种方法虽然加大了开发量£¬但是提高了程序的可维护性¡£

              这里写?#35745;?#25551;述

              点击复制链接 与好友分享!回本站首页
              上一篇£ºjava线程方法之join简单总结£¨代码实例£©
              下一篇£ºjava关于Annotation¡°注解¡±的实例解析
              相关文章
              图文推荐
              点击排行

              关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

              版权所有: 红黑联盟--致力于做实用的IT技术学习网站

              ¼«ËÙ·ÉͧºÃ¼Ù
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>