设计模式之简单工厂模式

简单工厂模式的意义在于:定义一个用于创建对象的接口。

简单工厂模式不属于23种GOF中的设计模式。一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。

一、简单工厂模式

简单工厂模式UML图如下:
这里写图片描述
简单工厂模式由以下部分组成:

工厂类(Factory):简单工厂模式的核心,用来创建对象。

抽象产品类(Product):它一般是具体产品要继承的父类或者要实现的接口。

具体产品角色(ConcreteProduct):工厂类所创建的对象就是此角色的实例。

二、案列分析

我们通过一个简单的例子分析一下简单工厂模式。

游客到动物园参观动物表演。动物管理员会将动物带入场地,不同的动物会有不同的表演。

这里就隐藏着一个简单的静态工厂方法。其中,游客就是客户端(要求动物出来表演),动物管理员就是工厂(创建不同的对象),动物都会表演就是抽象产品;不同的动物就是由工厂创建的具体对象。其UML图如下:

这里写图片描述

代码部分:

产品类:

    // 抽象产品类
    abstract class Animal{  
        abstract void show();
    }  
    //具体产品类
    class Monkey extends Animal{  
        public void show() {  
            System.out.println("我是一只猴子,我会骑车");  
        }  
    }  
    class Bear extends Animal{  
        public void  show() {  
            System.out.println("我是一头熊,我会顶球");  
        } 
    }  

工厂类:

public class AnimalFactory {  

    public static Animal  bringMonkey() {  
            return new Monkey();   
    }  
    public static Animal  bringBear() {  
            return new Bear();   
    }  
}

表演开始:


  public class Story{ 
     public static void main(String[] args) {  

        Animal  animal=  AnimalFactory.bringMonkey();
        animal.show();
        animal=AnimalFactory.bringBear();
        animal.show();
      }  
  } 

输出结果(代码亲测可以通过):

这里写图片描述

以上就是一个简单工厂模式中的静态方法工厂模式,好处是不必要实例化工厂了类。当动物园要增加一个新的动物进行表演,只要让其实现Animal类,在工厂类中添加新的创建方法即可,但违背了开闭原则。

代码地址:SampleFactory

欢迎大家留言评论,点击查看其它设计模式

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值