• 设计模式总结篇系列:抽象工厂模式(Abstract Factory)


    在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建。随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类。这与设计模式中的开闭原则有些违背。因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增加新的工厂类就可以了,不需要修改之前的代码。如此可以较好解决工厂方法模式中的问题。

    常见经典写法如下(以发送邮件和短信为例):

    1. 定义邮件类和短信类具有的共同接口:

    与工厂方法模式中定义相同。

    2.定义邮件类和短信类:

    与工厂方法模式中定义相同。

    3.定义不同工厂类所具有的共同接口(既然在需要的时候可以直接创建新的工厂类,那么这些工厂类应该是具有相同的接口的):

    1 interface Provider {
    2 
    3     public Sender produce();
    4 }

    4.定义创建发送邮件工厂类和发送短信工厂类:

    1 class MailFactory implements Provider {
    2 
    3     @Override
    4     public Sender produce() {
    5         return new MailSender();
    6     }
    7 
    8 }
    1 class SmsFactory implements Provider {
    2 
    3     @Override
    4     public Sender produce() {
    5         return new SmsSender();
    6     }
    7 
    8 }

    5.测试:

    1 public class Client {
    2 
    3     public static void main(String[] args) {
    4         Provider provider = new MailFactory();
    5         Sender sender = provider.produce();
    6         sender.send();
    7     }
    8 
    9 }
  • 相关阅读:
    python学习笔记 async and await
    python学习笔记 异步asyncio
    python学习笔记 协程
    python学记笔记 2 异步IO
    python学习笔记 可变参数关键字参数**kw相关学习
    逆波兰表达式 栈表达式计算
    Codeforces 270E Flawed Flow 网络流问题
    Codeforces 219D Choosing Capital for Treeland 2次DP
    kuangbin 带你飞 概率期望
    函数式编程思想:以函数的方式思考,第3部分
  • 原文地址:https://www.cnblogs.com/lwbqqyumidi/p/3746483.html
Copyright © 2020-2023  润新知