关闭

工厂方法模式

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

对于工厂模式,第三方框架用的比较多,懂的比较少,更别提自己去造了。为先初步理解下工厂方法模式,等以后有个更深刻认识再来更。

简单工厂模式就是造一个工厂接口,造一个产品接口,产生不同的具体实现类产品,然后用利用实现类工厂去生产产品,用户无需关心产品的生产过程,只在意最后拿到的产品即可。

书中以女娲造人为例,这里也拿这个好了。

首先定义我们要造的人的接口。

public interface Human{
    //产品的逻辑实现
    void getColor();
    void getLanguage();
}

定义几个具体实现的子类

//白人
public class WhiteMan implements Human{
    public void getColor(){
        System.out.println("我是白色人种");
    }

    public void getLanguage(){
        System.out.println("我讲英语");
    }
}
//黄种人
public class YellowMan implements Human{
    public void getColor(){
        System.out.println("我是黄种人");
    }
    public void getLanguage(){
        System.out.println("我讲汉语");
    }
}

生产产品的工厂

public calss abstract Facory{
    public abstract <T extends Human> T createHuman(Class<T> clz);  
}

具体的工厂类

public class HumanFacory extends Factory{
    Human human=null;
    try{
        human=(T)Class.forName(cla.getName()).newInstance();
    }catch(Exception e){
        System.out.println("生产错误");
        }
    }
    return (T)human;
}

工厂模式目前我所理解的最大功能是做到解耦,把具体产品类和工厂类分开,有利于代码的扩展,我即使再增加一个具体实现类,工厂类基本上也无需更改,
用户只需告诉工厂我要生产什么,那么就可以拿到什么,具体的生产过程与用户无关。

对于工厂方法模式,最简单是是简单工厂模式,即静态工厂模式:

public class HumanFactory{
    public static <T extends Human> T careatHuman(Class<T> c){
        Human human=null;
        try{
            human=(Human)Class.forName(c.getName()).newInstance();
        }catch(Exception e){
            System.out.println("生产错误);
        }
    }
}

还有升级为多个工厂类,替代单例模式与延迟初始化,目前水平不够,无法理解那么多,暂时对于工厂模式的好处也没有体会。只能分析到这里。学习是个无止境的过程。。。

0
0
查看评论

【JS设计模式】工厂方法模式

工厂方法模式(Factory method pattern)是一种实现“工厂”概念的面上对象设计模式。实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。  function extend(sup, sub) { ...
  • itpinpai
  • itpinpai
  • 2015-08-08 20:26
  • 1419

Java设计模式之——工厂方法模式

工厂方法模式简单介绍工厂方法模式是创建型设计模式之一。工厂方法模式是一种结构简单的模式,其在我们平时开发中应用很广泛。如 Android 中的 Activity 里的各个生命周期方法,以 onCreate 方法为例,它就可以看作是一个工厂方法,我们在其中可以构造我们的 View 并通过 setCon...
  • AkaiC
  • AkaiC
  • 2016-10-29 22:20
  • 266

设计模式之简单工厂方法模式和工厂方法模式

假设现在有一个网上车辆交易系统,可以买整车或者买该型车的零部件,现在有三种车型,林肯、凯迪拉克和别克,系统根据用户的选择来显示相应产品的具体信息,那么我们可以这样设计:     这样设计无疑是有很多缺点的,首先,在客户端有很多if语句,其次,客户端需要知道所有的...
  • shuaijiasanshao
  • shuaijiasanshao
  • 2016-04-03 17:51
  • 3229

【设计模式】简单工厂模式与工厂方法模式详细解读

1.前言     设计模式,各具特色,今天在此总结一下常见模式中 简单工厂模式与工厂方法模式的区别与联系 2.两种模式概要    1. 简单工厂模式         对于简单工厂模式的介绍,请...
  • yudandan10
  • yudandan10
  • 2013-03-10 15:09
  • 4762

java/android 设计模式学习笔记(3)---工厂方法模式

这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或取得对象的初始设置;选择生成哪个子对象实例;或在生成你需要的对象之前必须先生成一些辅助功能的对象,这...
  • zhao_zepeng
  • zhao_zepeng
  • 2016-05-21 20:36
  • 9078

C++工厂方法模式

工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的。
  • u011012932
  • u011012932
  • 2017-04-24 19:29
  • 1894

23种设计模式----创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)

1.单例模式  单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自己实例化并向整个系统提供这个实例。   通用类图如下:      通用代码如下:public class Singleton { private static final Singleton...
  • oChangWen
  • oChangWen
  • 2017-06-17 21:37
  • 449

创建型模式:工厂方法模式(Factory Method)--分析优缺点

转载地址:http://blog.csdn.net/lingyun_blog/article/details/41450085 请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么...
  • qq_25551295
  • qq_25551295
  • 2015-11-14 18:05
  • 363

软件设计模式——工厂方法模式(Factory Method)

工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。通俗的来说就是把简单工厂模式里面的分支语句给去掉,将每个具体产品的实例化过程放到相应的产品中去。相应的角色如下: (1)抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。...
  • Jungle_hello
  • Jungle_hello
  • 2016-04-13 22:51
  • 912

php 工厂方法模式

<?php /** * 工厂方法模式,定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。 * * 包含的对象 * 1,抽象产品 * 2,具体产品 * 3,抽象工厂 *...
  • sugang_ximi
  • sugang_ximi
  • 2016-03-15 11:09
  • 1595
    个人资料
    • 访问:3386次
    • 积分:190
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条