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


    1 工厂模式简单介绍

        工厂模式的定义:简单地说,用来实例化对象,取代new操作。

        工厂模式专门负责将大量有共同接口的类实例化。工作模式能够动态决定将哪一个类实例化。不用先知道每次要实例化哪一个类。

        工厂模式能够分一下三种形态:

        简单工厂 (Simple Factory)模式:又称静态工厂模式(StaticFactory)。

        工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory)。

        抽象工厂 (Abstract Factroy)模式:又称工具箱模式(kit)。

    1.1简单工厂模式(静态工厂模式):

           简单工厂模式有三个角色: 1. 抽象产品接口 2. 详细产品类 3. 工厂类

    1.2简单工厂模式的实现(建一个simpleFactory包。全部程序放在该包下):

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

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

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

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

    (3)建一个工厂类(ComputerFactory.java)。

    package simpleFactory;
    public class ComputerFactory {
    public  static Computer makeComputer(String ComputerName)throws Exception {
    		if(ComputerName.equals("dell")){
    		  return new Dell();
    		}else if(ComputerName.equals("lenovo")){
    		  return new Lenovo();
            }else if(ComputerName.equals("asus")){
              return new Lenovo();
            }else{
    		  throw new Exception();
            }
    	}
    }
    

     (4)建一个client程序(TestSimpleFactory.java)測试。

    package simpleFactory;
    public class TestSimpleFactory {
    	public static void main(String []args)throws Exception{
    		Computer computer=ComputerFactory.makeComputer("dell");
    		computer.run();
    	}
    }
    

    执行输出:

    戴尔电脑执行了

     

          从输出能够看出,工厂类依据不同的參数生成出不同的对象。不用亲自 new 对象。

    这就是简单工厂模式。简单工厂模式使得client不用负担起创建对象的责任,仅仅负责拿对象使用。在这样的模式中,对于产品是符合开闭原则的(对扩展开放,对改动封闭)。可是对于工厂部分就不符合这个原则了,每添加一种品牌电脑都要改动一下工厂类的代码。而且这个工厂类做了全部的东西。是一个上帝类,当它出了问题,全部东西都不能运作了,由于它提供的是静态方法,无法继承,所以无法提供具有继承等级结构的工厂角色,无法与有等级结构的产品相应起来,所以我们要改进这个工厂部分,就是接下来要分析的工厂方法模式。

    (7)最后。我们再看一下简单工厂模式的UML图。



    图1.1 简单工厂模式

     

    推荐文章:

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

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

     

    Author: Vicky
    Introduction:
    教育工作者

    Sign:
    前事之不忘,后事之师



     

     

  • 相关阅读:
    MSCRM2011 在Form里创建一个密码栏
    MSCRM 2011 可视化Ribbon编辑工具,超级强大!
    C# List去重
    理解Dynamic CRM2011 Ribbon里Sequence 和TemplateAlias意思
    SQL 语法大全
    SQL语句case关键字的用法
    ASP.NET 导出Excel时,某单元格内一部分文字加粗加下划线
    ASP.NET 导出Excel时,出现CLSID {0002450000000000C000000000000046} ,拒绝访问。
    通过DOM节点操作来获取表单信息
    嗨,博客园
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5120660.html
Copyright © 2020-2023  润新知