23种设计模式——工厂方法模式

目录

前言

简单工厂模式

UML

结构对象

代码实现

工厂方法模式

UML

结构对象

代码实现

结束语


前言

首先实现工厂方法模式,这个模式有两种,为简单工厂和工厂方法模式。

简单工厂模式

UML

结构对象

1. 抽象产品类:提供抽象方法供具体产品类实现

2. 具体产品类:提供具体产品

3. 工厂:根据内部逻辑返回相应的产品

代码实现

1. 抽象产品类

public interface Tea {
    void product();
}

2. 具体产品类

public class RedTea implements Tea{
    @Override
    public void product() {
        System.out.println("红茶");
    }
}

public class GreenTea implements Tea{
    @Override
    public void product() {
        System.out.println("绿茶");
    }
}

3. 工厂类

public class Factory {

    public Tea getTea(String type){
        Tea tea = null;
        if("red".equals(type)){
            tea = new RedTea();
        }else if("green".equals(type)){
            tea = new GreenTea();
        }
        return tea;
    }
}

4. 测试类

public class TeaTest1 {
    public static void main(String[] args) {
        Factory factory = new Factory();
        Tea red = factory.getTea("red");
        red.product();
        Tea green = factory.getTea("green");
        green.product();
    }
}

工厂方法模式

UML

结构对象

1. 抽象产品类:提供抽象方法供具体产品类实现

2. 抽象工厂:提供抽象方法供具体工厂实现

3. 具体产品类:提供具体的产品

4. 具体工厂:提供具体的工厂

代码实现

1. 抽象产品类

public interface Tea {
    void product();
}

3. 抽象工厂

public interface IFactory {
    Tea getFactory();
}

2. 具体产品类

public class GreenTea implements Tea {
    @Override
    public void product() {
        System.out.println("绿茶");
    }
}

public class RedTea implements Tea {
    @Override
    public void product() {
        System.out.println("红茶");
    }
}

4. 具体工厂

public class GreenFactoryImpl implements IFactory{
    @Override
    public Tea getFactory() {
        return new GreenTea();
    }
}


public class RedFactoryImpl implements IFactory{
    @Override
    public Tea getFactory() {
        return new RedTea();
    }
}

5. 测试类

public class TeaTest2 {

    public static void main(String[] args) {
        RedFactoryImpl redFactory = new RedFactoryImpl();
        GreenFactoryImpl greenFactory = new GreenFactoryImpl();

        Tea rf = redFactory.getFactory();
        Tea gf = greenFactory.getFactory();

        rf.product();
        gf.product();
    }
}

结束语

完成了工厂方法模式,接下来就要进行抽象方法工厂的实现了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值