zoukankan      html  css  js  c++  java
  • 简单工厂,工厂方法和抽象工厂

      一直对简单工厂,工厂方法和抽象工厂分得不清不楚,所以在这里理清一下他们之间的联系,其实他们都属于工厂模式。

      1.首先是简单工厂,就是所有对象,不管分类,都是通过一个工厂生产出来,代码如下:

      Computer类

      

    package person.ismallboy;
     /**
      * 电脑类
      * @author regis
      *
      */
    public class Computer {
        private IOutput out;
        public Computer(IOutput out){
            this.out = out;
        }
    
        public void print(){
            this.out.out();
        }
        
        
        /**
         * 
         * @param args
         */
        public static void main(String[] args) {
            OutputFactory of = new OutputFactory();
            Computer c = new Computer(of.getOutput("Printer"));
            c.print();
        }
    }
    View Code

      IOutput接口

      

    package person.ismallboy;
    
    /**
     * 输出设备接口
     * @author regis
     *
     */
    public interface IOutput {
        
        /**
         * 输出方法
         */
        void out();
    }
    View Code

      BetterPrinter类

      

    package person.ismallboy;
    
    public class BetterPrinter implements IOutput {
    
        @Override
        public void out() {
            // TODO Auto-generated method stub
            System.out.println("BetterPrinter");
        }
    }
    View Code

      Printer类

      

    package person.ismallboy;
    
    public class Printer implements IOutput {
    
        @Override
        public void out() {
            // TODO Auto-generated method stub
            System.out.println("Printter");
        }    
    }
    View Code

      工厂类:OutputFactory

      

    package person.ismallboy;
    
    /**
     * 输出设备生产工厂
     * @author regis
     *
     */
    public class OutputFactory {
        public IOutput getOutput(String strPrinter){
            switch (strPrinter) {
            case "Printer":
                return new Printer();
            case "BetterPrinter":
                return new BetterPrinter();
            default:
                break;
            }
            return null;
        }
    }
    View Code

      以上就是简单工厂了,自己慢慢领悟。(例子参考自:李刚老师《轻量级 java EE企业应用实战》一书)

    2.工厂方法

      工厂方法就是对简单工厂的细分,根据以上的例子,就是简单工厂的对象全部是通过一个工厂来生产产品,而工厂方法是根据分类建立几个工厂,不同的工厂生产不同的对象,就是Printer对象由PrinterFactory工厂生产,BetterPrinter由BetterPrinterFactory工厂生产,这样就可以在工厂里面避免判断的逻辑了,代码如下:

    ……

    3.抽象工厂

      工厂方法虽然可以避免在工厂里面做逻辑判断,但是这样的话,就导致客户端跟具体的工厂耦合了,这时候,就可以再抽象一层出来,就是抽象一个工厂的工厂出来,就是用一个工厂来生产工厂方法中的具体工厂,这样客户端就可以不用跟具体的工厂耦合了,只要跟工厂的工厂耦合就可以了,这就叫做抽象工厂,即是把工厂也抽象出来,代码如下:

      ……

      

  • 相关阅读:
    Tomcat源码(二):tomcat启动之前的初始化
    Tomcat源码(一):整体架构
    SSH的三个组件ssh、sftp、scp介绍
    远程连接linux服务上的mysql
    linux系统上安装mysql5.6(详细步骤)
    一种基于数字证书的单点登录的实现方法(转)
    jacob操作word (转)
    解决fis3下载慢,没反应
    Spring框架集成mybatis框架的配置(笔记)
    eclipse导入lombok后打不开(如果你的lombok不是最新的,那就来下载最新的)
  • 原文地址:https://www.cnblogs.com/ismallboy/p/5746488.html
Copyright © 2011-2022 走看看