zoukankan      html  css  js  c++  java
  • 浅析JAVA设计模式之工厂模式(二)

    1 工厂方法模式简单介绍

            工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类。而是一个抽象工厂,提供详细工厂实现的接口,详细创建产品交由子工厂去做,抽象工厂不涉及不论什么产品被实例化的细节。

    而不同等级的产品。就相应一个不同等级的工厂,例如以下图。

    1

    1.1工厂方法模式(多态性工厂模式):

          工厂方法模式有四个角色: 1. 抽象产品接口 2. 详细产品类 3. 抽象工厂接口 4.详细工厂类

    1.2工厂方法的实现(建一个factroyMethod包,全部程序都放在该包下):

    (1)首先建一个抽象产品接口(Computer.java)。

    package factroyMethod;
    public interface Computer {
    	public void run();
    }
    

    (2)建两个详细产品类(Dell.javaLenovo.java)。须要实现Computer接口。

    package factroyMethod;
    public class Dell implements Computer {
    	public void run() {
    		System.out.println("戴尔电脑执行了");
    	}
    }
    
    package factroyMethod;
    public class Lenovo implements Computer {
    	public void run() {
    		System.out.println("联想电脑执行了");
    	}
    }
    

    (3)建一个抽象工厂接口(ComputerFactory.java)。

    package factroyMethod;
    public interface ComputerFactory {
    	public Computer makeComputer();
    }
    

    (4)建两个个详细工厂类(DellComputerFactory.java、LenovoComputerFactory.java)。

    package factroyMethod;
    public class DellComputerFactory implements ComputerFactory {
    	public Computer makeComputer(){
    		return new Dell();
    }
    }
    package factroyMethod;
    public class LenovoComputerFactory implements ComputerFactory {
    	public Computer makeComputer(){
    		return new Lenovo();
    }
    }
    

     (5)建一个client程序(TestFactroyMethod.java)測试。

    package factroyMethod;
    public class TestFactroyMethod {
    	public static void main(String []args)throws Exception{
    		ComputerFactory computerFactory=
    			new DellComputerFactory();
    		Computer computer= computerFactory.makeComputer();
    		computer.run();
    	}
    }
    

    执行输出:

    戴尔电脑执行了

     

          从输出能够看出,依据须要生成的详细产品。调用相应的子工厂。即使产品添加了种类,仅仅要实现相应的工厂。而不须要改动工厂的源码,工厂的登记相应着产品的等级,改进了简单工厂模式的缺点。

    (7)最后,我们再看一下工厂方法模式的UML图。


    图1.1 工厂方法模式


    推荐文章:

    浅析JAVA设计模式之工厂模式(一)

    http://blog.csdn.net/minidrupal/article/details/38323341


    Author: Vicky
    Introduction:
    教育工作者

    Sign:
    前事不忘。后事之师



     

  • 相关阅读:
    SOJ4478 Easy Problem II(模拟、栈)
    SOJ4480 Easy Problem IV (并查集)
    暴力枚举法总结
    区间DP学习总结
    51nod 1019 逆序数(逆序数+离散化)
    win7系统查看硬盘序列号步骤
    雷达图制作方法
    matlab更改打开时候默认路径
    excel多组数据散点图生成
    EndNote(三)之中文引文导入方式
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6991968.html
Copyright © 2011-2022 走看看