`
resunly
  • 浏览: 40815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式-工厂模式

    博客分类:
  • java
阅读更多

工厂模式,顾名思义就是一个工厂要能根据不同原料来生产不同的产品,我们把工厂中的生产线叫产品生产者,很明显工厂有很多的生产线,工厂会根据提供的原料,选择那条产线来生产出对应的产品。

 

1.首先所有的生产线都有一个公用方法那就是生产动作,我们写接口

/**
* Created with IntelliJ IDEA.
* User: hank
* Date: 2016/5/26
* Time: 11:22
* 生产类接口 ”生产出各种类型的产品“
* To change this template use File | Settings | File Templates.
*/
public interface Productor {
/**
* 生产方法
*/
public void product();
}

 2.实现生产接口,因为我们要生产不同的产品

/**
 * Created with IntelliJ IDEA.
 * User: hank
 * Date: 2016/5/26
 * Time: 11:25
 * 生产TV 的生产者
 * To change this template use File | Settings | File Templates.
 */
public class TVProductor implements Productor {
    @Override
    public void product() {
        System.out.println("TVProductor.product===>生产TV");
    }
}
/**
 * Created with IntelliJ IDEA.
 * User: hank
 * Date: 2016/5/26
 * Time: 11:25
 * 生产PC的生产者
 * To change this template use File | Settings | File Templates.
 */
public class PCProductor implements Productor {
    @Override
    public void product() {
        System.out.println("PCProduct.product===>生产PC");
    }
}

 3.写工厂类:

/**
 * Created with IntelliJ IDEA.
 * User: ${xiangdong.he}
 * Date: 2016/5/26
 * Time: 11:27
 * 工厂会根据提供的原料“strType”,自助选择那条产线来生产,来生产出对应的产品
 */
public class ProductorFactory {
    public Productor getProductor(String strType){
        if("TV".equals(strType)){
            return new TVProductor();
        }else if("PC".equals(strType)){
            return new PCProductor();
        }else{
            System.out.println("对不起!我们工厂不能生产这种产品!~");
            return null;
        }
    }
}

 这样我们就会有“工厂了”,根据我们自己的实力,依来源材料来做各种不同的产品。

再比如我们的客户不知道我们自己能生产什么,突然送过来原材料让我们生产我们无法生产的产品那就只能说System.out.println("对不起!我们工厂不能生产这种产品!~");

那我们优化下给我们的工厂打广告告知大众能生产什么.

改写工厂类的方法:

    public PCProductor getPcProductor(){
        return new PCProductor();
    }
    
    public TVProductor getTvProductor(){
        return new TVProductor();
    }

 这样我们就告诉客户我们只生产这两种类型的产品。

test:

public class MyTest {
    public static void main(String[] args) {
        //1.
        //实例化工厂
        ProductorFactory pf = new ProductorFactory();
        //获得工厂具体的生产者
        Productor p =  pf.getProductor("TV");
        //生产者生产
        p.product();

        //2.
        //获得工厂具体的生产者
        PCProductor pcpd = pf.getPcProductor();
        pcpd.product();
    }

}

显然第二种我们不会犯加工不得错误

这样如果我们有钱了在添加一条生产DV的生产线,只要在在写一个实现方法,再在工厂类中加入。

这样我们要改动工厂类。

还有一种抽象工厂模式模式,让我们不用修改的太多。

就是将工厂抽象出一个接口,由具体的工厂类实现,生产者还是之前的实现原理,相当于我们将之前的生产线升级成一个工厂一条产线。这样我们在增加生产其他产品的时候就会在建立一个工厂,对应的在建立一条产线,不会再修改任何东西。

 

 

 

分享到:
评论

相关推荐

    设计模式-工厂模式.pdf

    设计模式 -工厂模式.pdf

    java常用设计模式-工厂模式

    Java常用设计模式-工厂模式 工厂模式(Factory Pattern)是一种常用的设计模式,它通过一个工厂类来实现对象的创建,而无需直接暴露对象的创建逻辑给客户端。这种模式可以使客户端代码与具体的产品类解耦,提高代码...

    C#设计模式-工厂模式系列

    C#设计模式-工厂模式系列

    《设计模式-工厂模式》中代码示例

    《设计模式-工厂模式》中的工厂方法模式代码示例,非简单工厂代码示例,简单工厂代码示例在原文中已经写好。

    java常用设计模式-工厂模式的实现.doc

    java常用设计模式-工厂模式的实现.doc

    java设计模式-工厂模式

    Java设计模式中的工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个工厂对象来完成创建工作。这种模式的核心在于封装了对象...

    设计模式-工厂模式 Java源码

    工厂模式是设计模式中的一种创建型模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码无需关心具体对象的创建细节,只需通过一个统一的接口来获取所需的对象。 在Java编程语言中,工厂模式通常分为简单...

    c++设计模式-工厂方法模式

    c++设计模式-创建型模式-工厂方法模式-最简单的源码-qt工程

    软件设计模式-工厂模式

    该资源详细介绍了工厂模式

    c#设计模式-工厂模式

    《C#设计模式——工厂模式详解》 工厂模式是一种常用的设计模式,它的主要目的是通过抽象出产品创建过程,使得客户端代码不再直接new对象,而是通过工厂来获取对象,从而降低了代码之间的耦合度,提高了系统的可...

    Java设计模式教程 - Java设计模式 - 工厂模式

    工厂模式作为最常用的设计模式之一,是创建型模式的代表,它的主要目标是提供一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,用户在使用时无需知道具体创建的对象是什么类型,只需通过工厂...

    2.设计模式-工厂模式1

    工厂模式是软件设计模式中的核心模式之一,它在软件开发中扮演着重要的角色,特别是在需要创建一系列相关或相互依赖的对象时。工厂模式的主要目的是将对象的创建过程封装起来,使得客户端在使用对象时,无需关心对象...

    创建型设计模式---工厂设计模式实现

    创建型设计模式---工厂设计模式实现

    PHP5设计模式-工厂模式实现

    工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端需要创建一个对象时,只需要指定其类型即可,而无需知道具体的创建过程。工厂模式将对象的创建过程封装了起来,使得...

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

Global site tag (gtag.js) - Google Analytics