设计模式-工厂模式

简单工厂模式

  • 简单工厂方法(静态工厂方法)模式就是由一个工厂对象决定创建出哪一种产品的实例。
  • 定义一个创建对象的类,由这个类来封装实例化对象的行为。
  • 在软件开发中,我们大量用到某种,某类,某对象时会用到工厂方法模式。

类图

简单工厂模式类图

案例

//桌子接口
package simpleFactory;

public interface Desk {
    String getType();
}
//塑料桌
public class PlasticDesk implements Desk {
    private String type = "塑料桌";
    @Override
    public String getType() {
        return type;
    }
}
//木桌
package simpleFactory;

public class WoodenDesk implements Desk{
    private String type = "木质桌";
    @Override
    public String getType() {
        return type;
    }
}
// 工厂方法
package simpleFactory;

public class DeskFactory {
    public static Desk createDesk(Type type) {
        switch (type) {
            case WOODEN:
                return new WoodenDesk();
            case PLASTIC:
                return new PlasticDesk();
            default:
                return null;
        }
    }
}
//main
package simpleFactory;

public class Main {
    public static void main(String[] args) {
        Desk desk = DeskFactory.createDesk(Type.PLASTIC);
        System.out.println(desk.getType());
    }
}

工厂模式

介绍

  1. 工厂方法带参数,用参数区分要创建的不同类对象
  2. 每类对象分配一个工厂方法

UML图

在这里插入图片描述

案例


抽象工厂方法模式

介绍

UML图

在这里插入图片描述

案例

//桌子接口
public interface IDesk {
    String getType();
}
//湖南塑料桌
public class HuNanPlasticDesk implements IDesk {
    private String type = "湖南塑料桌";
    @Override
    public String getType() {
        return type;
    }
}
//湖南木桌
public class HuNanWoodenDesk implements IDesk {
    private String type = "湖南木质桌";
    @Override
    public String getType() {
        return type;
    }
}
//河南南木桌
public class HeNanWoodenDesk implements IDesk {
    private String type = "河南木质桌";
    @Override
    public String getType() {
        return type;
    }
}
//和南塑料桌

public class HeNanPlasticDesk implements IDesk {
    private String type = "河南塑料桌";
    @Override
    public String getType() {
        return type;
    }
}
// 工厂方法接口
public interface IDeskFactory {
    IDesk CreateDesk( Type type);
}
//湖南工厂
public class HuNanDeskFactory implements IDeskFactory{

    @Override
    public IDesk CreateDesk(Type type) {
        switch (type) {
            case WOODEN:
                return new HeNanWoodenDesk();
            case PLASTIC:
                return new HeNanPlasticDesk();
            default:
                return null;
        }

    }
}
//河南工厂
public class HeNanDeskFactory implements IDeskFactory{

    @Override
    public IDesk CreateDesk(Type type) {
        switch (type) {
            case WOODEN:
                return new HeNanWoodenDesk();
            case PLASTIC:
                return new HeNanPlasticDesk();
            default:
                return null;
        }

    }
}
//main
public class Main {
    public static void main(String[] args) {
        HeNanDeskFactory heNanDeskFactory = new HeNanDeskFactory();

        IDesk desk =heNanDeskFactory.CreateDesk(Type.PLASTIC);
        System.out.println(desk.getType());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值