关闭

工厂模式

标签: 工厂模式设计模式
306人阅读 评论(0) 收藏 举报
分类:

工厂模式中大概可分为三种:简单工厂,工厂方法,抽象工厂。
工厂模式的优点是让代码之家的依赖关系变少,降低项目耦合。

简单工厂

简单工厂可以说并不是一种设计模式,只是一种代码风格。
这是我写的一个简单工厂的例子简单工厂demo
这个工厂用来获取物品对象,利用多态实现这一个功能,如果代码中需要很多new操作,这样可以大大节省代码量和依赖关系,也让代码更加清晰。

工厂方法

headfirst中的定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。
其实工厂方法就是定义一个抽象方法,让该抽象类的子类(也就是一个工厂类)去new符合该工厂要求的对象。
这是我工厂方法的demo工厂方法demo
例子中可以看到我声明一个抽象类Store,其getComodity的需要获取的Comodity对象通过抽象方法createComodity创建,具体的创建方式又在其子类中实现。如果store中有通用的方法是可以放到里面的。这样所有得Store的子类可以大大节省代码量。这也实现了对象类型由子类控制,即不同的Store生成不同的对象。

抽象工厂

先来headfirst定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
这是我抽象工厂示例代码抽象工厂demo
其实抽象工厂意如其名,就是工厂是一个抽象类(接口),就像代码中原料的工厂MaterialFactory一样,其实现类会执行具体的new操作。然而抽象工厂被使用的地方一般会作为一个参数传递给被调用者,就像代码中Red类,Red类的构造方法需要一个MaterialFactory,这样Red所需要的类就会根据传进来的不同的factory获取不同的对象,也是利用了多态。

这里工厂方法与抽象工厂是根据我们业务场景不同而区别使用的,但他们都是有一个共同点,针对接口编程,这样会降低代码耦合。

0
0
查看评论

一个例子穿插三种不同的工厂模式形态

1、简单工厂模式 工厂类根据提供给它的参数,返回的是几个产品中的一个类的实例。通常情况下,它返回的是一个公共的父类,在这个工厂类里面,父类的引用指向子类的对象 厂长生产杯子时先不让生产线知道我要产的是玻璃的还是瓷的,而是让它在不知道具体材料的情况下先做它能做的,等到它把模具做好,只需要向其中...
  • u013360022
  • u013360022
  • 2016-04-07 21:59
  • 609

Spring 实现两种设计模式:工厂模式和单态模式

本文摘自:李刚 著 《轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发》                 &...
  • Titilover
  • Titilover
  • 2011-08-31 13:05
  • 26561

关于工厂模式的作用。为什么要用工厂模式?

关于工厂模式的作用。为什么要用工厂模式?
  • kocscs123
  • kocscs123
  • 2016-11-20 19:56
  • 1018

单例、多例模式&&工厂模式

单例、多例模式假设,老张开车去东北public class Car { public void run(){ System.out.println("冒着烟奔跑中car........."); } }public class Test { pub...
  • hackerHL
  • hackerHL
  • 2017-02-22 15:20
  • 808

工厂模式详解

工厂模式详解java实现
  • huruzun
  • huruzun
  • 2014-05-23 17:41
  • 1582

Android设计模式之工厂模式 Factory

一.概述 平时做项目跟使用第三方类库的时候经常会用到工厂模式.什么是工厂模式,简单来说就是他的字面意思.给外部批量提供相同或者不同的产品,而外部不需要关心工厂是如何创建一个复杂产品的过程.所以工厂模式可以降低模块间的耦合,同时可以提高扩展性(当有新的产品出现时,只需要扩展工厂就行了,...
  • l2show
  • l2show
  • 2015-08-23 16:25
  • 20406

工厂模式及在项目中的应用

工厂模式分为简单工厂、工厂方法模式和抽象工厂模式。简单工厂顾名思义是最简单的,从一个工厂获取所需的产品类似于factory.getProduct1();或factory.getProduct2(),最经典的运用switch语句。简单工厂要增加产品要修改源码,破坏ocp原则(对扩展开放,修改封闭) ...
  • empyan
  • empyan
  • 2017-02-06 21:20
  • 2453

工厂模式(自己的理解和实现)

最近学习了工厂模式,看了网上的教程,也学习了别人的代码,最后自己按照自己的想法实现了一下。 有想看原文的去这个网址 http://blog.csdn.net/mmquit/article/details/1672694 如果想要看我自己实现的源码的,去这个网址下载。支持下小弟工...
  • carterjin
  • carterjin
  • 2012-10-10 11:13
  • 5340

iOS工厂模式的实质性总结

最近在公司搞分享活动,索性就分享了工厂模式这个看似大家都不重视的设计模式。实际上开发过程中用到的场景不少啊。 经过初步的了解和认识工厂之后,再去你们公司项目工程里面看看代码,肯定有不少之处用到了工厂模式。 然而想用到如火纯青,还需要我们不断的练习。 这篇文章目的不是让你立马都可以使用这个模式,而是能...
  • qq_25475307
  • qq_25475307
  • 2017-08-17 18:11
  • 262

工厂模式实例(java)

 工厂模式   一、工厂模式的介绍   工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。   工厂模式的几种形态:   (1)简单工厂...
  • Elise_zhou
  • Elise_zhou
  • 2015-05-04 10:51
  • 2550
    个人资料
    • 访问:75009次
    • 积分:1326
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:1篇
    • 译文:0篇
    • 评论:31条