设计模式--工厂方法(抽象)

设计模式–工厂方法

工厂方法模式由抽象工厂、具体工厂、抽象产品、具体产品4个要素组成。
-抽象工厂:提供创建产品的具体接口。
-具体工厂:主要实现抽象工厂中的接口,完成具体产品的创建
-抽象产品:定义了产品的规范,描述了产品的主要特性和功能
-具体产品:实现了抽象产品中的接口,由具体工厂来创建,与具体工厂一一对应
  • 抽象工厂
/**
 * @Author lyq
 * @Descripition 抽象工厂,生产接口
 */
public interface AbstractFactoryMethod {
    //产品1
    Product01 newProduct01();
    //产品2
    Product02 newProduct02();
}
  • 具体工厂
-createFactory01工厂中的newProduct01产品、newProduct02产品属于一个产品等级,它们都是麻辣酱;
-createFactory02工厂中的newProduct01产品、newProduct02产品属于一个产品等级,它们都是豆腐乳;
-createFactory01工厂中的生产的newProduct01产品和createFactory02工厂中的生产的newProduct01产品等属于一个产品族,它们都是干妈品牌
-createFactory01工厂中的生产的newProduct02产品和createFactory02工厂中的生产的newProduct02产品等属于一个产品族,它们都是企鹅品牌
/**
 * @Author lyq
 * @Descripition 具体工厂,实现抽象工厂中的方法,完成具体产品的创建,属于同一个品牌
 */
public class createFactory01 implements AbstractFactoryMethod{
/*************************************麻辣酱工厂******************************************/
    /**
     * 创建第一款产品
     * @return
     */
    public Product01 newProduct01() {
        System.out.println("创建干妈品牌产品:原味麻辣酱!");
        return new CreateProduct11();
    }

    /**
     * 创建第二款产品
     * @return
     */
    @Override
    public Product02 newProduct02() {
        System.out.println("创建企鹅品牌产品:原味麻辣酱!");
        return new CreateProduct21();
    }
}
/**
 * @Author lyq
 * @Descripition 具体工厂,实现抽象工厂中的方法,完成具体产品的创建
 */
public class createFactory02 implements AbstractFactoryMethod{

    /*************************************豆腐乳工厂******************************************/
    /**
     * 创建第一款产品
     * @return
     */
    public Product01 newProduct01() {
        System.out.println("创建干妈品牌产品:原味豆腐乳!");
        return new CreateProduct12();
    }

    /**
     * 创建第二款产品
     * @return
     */
    @Override
    public Product02 newProduct02() {
        System.out.println("创建企鹅品牌产品:原味豆腐乳!");
        return new CreateProduct22();
    }
}
  • 抽象产品
/**
 * @Author lyq
 * @Descripition 抽象产品,定义了规范,描述了产品的特性和功能
 */
public interface Product01 {
    void show();
}
/**
 * @Author lyq
 * @Descripition 抽象产品,定义了规范,描述了产品的特性和功能
 */
public interface Product02 {
    void show();
}
  • 具体产品
/**
 * @Author lyq
 * @Description 具体产品,实现了抽象产品所定义的接口
 */
public class CreateProduct11 implements Product01 {
    public void show() {
        System.out.println("品牌1:具体产品1展示.........");
    }
}
/**
 * @Author lyq
 * @Description 具体产品,实现了抽象产品所定义的接口
 */
public class CreateProduct12 implements Product01 {
    public void show() {
        System.out.println("品牌1:具体产品2展示.........");
    }
}
/**
 * @Author lyq
 * @Description 具体产品,实现了抽象产品所定义的接口
 */
public class CreateProduct21 implements Product02 {
    public void show() {
        System.out.println("品牌2:具体产品1展示.........");
    }
}
/**
 * @Author lyq
 * @Description 具体产品,实现了抽象产品所定义的接口
 */
public class CreateProduct22 implements Product02 {
    public void show() {
        System.out.println("品牌2:具体产品2展示.........");
    }
}
  • 测试
/**
 * @Author lyq
 * @Descripition 测试类
 */
public class Test {
    public static void main(String[] args) {
        createFactory01 c1 = new createFactory01();
        Product01 p11 = c1.newProduct01();
        Product02 p21 = c1.newProduct02();
        p11.show();
        p21.show();
        createFactory02 c2 = new createFactory02();
        Product01 p12 = c2.newProduct01();
        Product02 p22 = c2.newProduct02();
        p12.show();
        p22.show();
    }
}
  • 结果
创建干妈品牌产品:原味麻辣酱!
创建企鹅品牌产品:原味麻辣酱!
品牌1:具体产品1展示.........
品牌2:具体产品1展示.........
创建干妈品牌产品:原味豆腐乳!
创建企鹅品牌产品:原味豆腐乳!
品牌1:具体产品2展示.........
品牌2:具体产品2展示.........
  • 类图

    注意:+、-、#、~,分别表示公有(Public)、私有(Private)、受保护(Protected)和朋友(Friendly)4 种
    

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值