工厂方法模式实例

本文通过一个实例展示了如何使用工厂方法模式来创建不同网络协议的连接类,如POP3Connection、IMAPConnection和HTTPConnection。在设计中,定义了一个Connection接口和多个实现该接口的具体连接类,同时创建了相应的工厂类用于生成不同协议的连接对象。在客户端代码中,通过工厂类的buildConnection方法动态地创建并使用连接对象。
摘要由CSDN通过智能技术生成

问题描述

在某网络管理软件中,需要为不同的网络协议提供不同的网络连接类,例如针对POP3协议的连接类POP3Connection,针对IMAP协议的连接类IMAPConnection,针对HTTP协议的连接类HTTPConnection等。由于网络连接对象创建的过程较为复杂,需要将其创建过程封装到专门的类中,该软件还支持更多类型的网络协议。

结构图

在这里插入图片描述

编程实现

Connection类

public interface Connection {
    void connect();
}
public class POP3Connection implements Connection{
    @Override
    public void connect() {
        System.out.println("execute POP3 protocol");
    }
}
public class IMAPConnection implements Connection {
    @Override
    public void connect() {
        System.out.println("execute IMAP protocol");
    }
}
public class HTTPConnection implements Connection{
    @Override
    public void connect() {
        System.out.println("execute HTTP connection");
    }
}

工厂类

public interface ConnectionFactory {
    Connection buildConnection();
}
public class POP3ConnectionFactory implements ConnectionFactory{
    @Override
    public Connection buildConnection() {
        return new POP3Connection();
    }
}
public class IMAPConnectionFactory implements ConnectionFactory{
    @Override
    public Connection buildConnection() {
        return new IMAPConnection();
    }
}
public class HTTPConnectionFactory implements ConnectionFactory{
    @Override
    public Connection buildConnection() {
        return new HTTPConnection();
    }
}

客户端

public class Client {
    public static void main(String[] args) {
        ConnectionFactory connectionFactory=new HTTPConnectionFactory();
        Connection connection=connectionFactory.buildConnection();
        connection.connect();
    }
}
  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值