简单工厂模式

定义

简单工厂模式属于创建型模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

工厂职责描述

工厂角色(Creator):这是简单工厂模式的核心,它负责创建所需要的产品对象。
抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,可以是接口也可以是抽象类,提供所有实例所共有的公共接口。
具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,拥有共同的父类。

场景分析及代码实现

GG带着女朋友MM去游乐场游玩,游乐场项目众多,GG和MM可以任意选择项目玩,
这时候游乐园就是工厂,可以根据GG和MM的选择返回不同想游乐项目。
代码实现:
新建游乐场接口,抽象(Product)产品角色

/**
 * 简单工厂模式
 */
public interface PlayProject {
    /**
     * 获取游乐项目信息
     */
    void getPlayProjectInfo();
}

建立具体游乐项目:
旋转飞车

/**
 * 旋转飞车
 * @author other
 * @since 2021/7/9 17:35
 */
public class CarPlay implements PlayProject{
    @Override
    public void getPlayProjectInfo() {
        System.out.print("旋转飞车:\n");
        System.out.print("票价:\n");
        System.out.print("      儿童:10/次 成人:15/次\n");
        System.out.print("每次人数:20人\n");
        System.out.print("\n");
        System.out.print("\n");
    }
}

海盗船

/**
 * 海盗船
 * @author other
 * @since 2021/7/9 17:39
 */
public class ShipPlay implements PlayProject{
    @Override
    public void getPlayProjectInfo() {
        System.out.print("海盗船:\n");
        System.out.print("票价:\n");
        System.out.print("      儿童:8元/次 成人:12/次\n");
        System.out.print("每次人数:30人\n");
        System.out.print("\n");
        System.out.print("\n");
    }
}

惊悚谷

/**
 * 惊悚谷
 * @author other
 * @since 2021/7/9 17:36
 */
public class ThrillerPlay implements PlayProject{
    @Override
    public void getPlayProjectInfo() {
        System.out.print("惊悚谷:\n");
        System.out.print("票价:\n");
        System.out.print("      儿童:限玩 成人:10/次\n");
        System.out.print("每次人数:不限\n");
        System.out.print("\n");
        System.out.print("\n");
    }
}

建立游乐项目工厂

/**
 * 游玩项目工厂
 *
 * @author other
 * @since 2021/7/10 9:49
 */
public class PlayProjectFactory {
    private PlayProject project;

    /**
     * 根据景点字母编号编号获取娱乐游玩项目
     * @param projectCode 景点字母编号编号
     * @return 返回游玩项目对象
     */
    public PlayProject getPlayProject(String projectCode) {
        switch(projectCode.charAt(0))
        {
            case 'A'://旋转飞车
            {
                project = new CarPlay();
                break;
            }
            case 'B'://海盗船
            {
                project = new ShipPlay ();
                break;
            }
            case 'C'://惊悚谷
            {
                project = new ThrillerPlay();
                break;
            }
        }
    }
}

测试,获取游乐项目

public static void main(String[] args) {
    // 简单工厂模式
    PlayProjectFactory factory = new PlayProjectFactory();
    // 旋转飞车
    PlayProject playProject = factory.getPlayProject("A");
    playProject.getPlayProjectInfo();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值