`

Java设计模式——抽象工厂模式

阅读更多
工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。

请看例子:
public interface Sender { 
    public void Send(); 



两个实现类:
public class MailSender implements Sender { 
    @Override 
    public void Send() { 
        System.out.println("this is mailsender!"); 
    } 



public class SmsSender implements Sender { 
 
    @Override 
    public void Send() { 
        System.out.println("this is sms sender!"); 
    } 






两个工厂类:
public class SendMailFactory implements Provider { 
     
    @Override 
    public Sender produce(){ 
        return new MailSender(); 
    } 



public class SendSmsFactory implements Provider{ 
 
    @Override 
    public Sender produce() { 
        return new SmsSender(); 
    } 





再提供一个接口:
public interface Provider { 
    public Sender produce(); 




测试类:
public class Test { 
 
    public static void main(String[] args) { 
        Provider provider = new SendMailFactory(); 
        Sender sender = provider.produce(); 
        sender.Send(); 
    } 

其实这个模式的好处就是,如果你现在想增加一个功能:发及时信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,就OK了,无需去改动现成的代码。这样做,拓展性较好!
分享到:
评论

相关推荐

    SETema5:软件设计模式——抽象工厂

    SETema5 软件设计模式——抽象工厂

    java23种设计模式——图解——附带源码

    java23种设计模式 工厂模式 ,抽象工厂,建造者模式,单态模式,原型模式

    Java设计模式——工厂设计模式

    抽象工厂模式 面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对...

    设计模式——JAVA.docx

    JAVA设计模式总结之23种设计模式 一:设计模式之六大原则 总原则:开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。 1.Abstract Factory(抽象工厂模式) 2.Adapter(适配器模式)......

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    java设计模式

    9.3.3 抽象工厂模式的使用场景 9.3.4 抽象工厂模式的注意事项 9.4 最佳实践 第10章 模板方法模式 10.1 辉煌工程—制造悍马 10.2 模板方法模式的定义 10.3 模板方法模式的应用 10.4 模板方法模式的扩展 10.5 最佳实践...

    Java设计模式:工厂模式——图文+代码示例(通俗易懂)

    先来看看,简单工厂模式——也叫静态工厂模式,这里举个例子:你要去买一台手机,你不用关心手机是怎么生产出来的,里面的零件具体又是怎么制造的,这些通通都交给工厂去处理,你尽管去买手机就好了。 简单工厂模式...

    深入浅出设计模式(中文版电子版)

    3.3AbstractFactoryPattern(抽象工厂模式) 45 3.3.1定义 45 3.3.2现实例子——扩展了的兵工厂 48 3.3.3C#实例——大陆生态系统 49 3.3.4Java实例——电脑产品 52 3.3.5优势和缺陷 57 3.3.6应用情景 57 3.4...

    深入浅出设计模式(中文版)

    3.3AbstractFactoryPattern(抽象工厂模式) 45 3.3.1定义 45 3.3.2现实例子——扩展了的兵工厂 48 3.3.3C#实例——大陆生态系统 49 3.3.4Java实例——电脑产品 52 3.3.5优势和缺陷 57 3.3.6应用情景 57 3.4...

    design-pattern-java.pdf

    工厂三兄弟之抽象工厂模式(二) 工厂三兄弟之抽象工厂模式(三) 工厂三兄弟之抽象工厂模式(四) 工厂三兄弟之抽象工厂模式(五) 单例模式-Singleton Pattern 确保对象的唯一性——单例模式 (一) 确保对象的...

    管理系统javasal源码-Design-Patterns-Demo:超全的设计模式——理论+实现demo

    Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern) 2 结构型模式:这些设计模式关注类和对象的组合。继承的概念被用来...

    java高手真经 (UML建模+设计模式+面向服务架构) 卷6

    综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...

    java高手真经 (UML建模+设计模式+面向服务架构) 卷8

    综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...

    设计模式Demo

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    java高手真经 (UML建模+设计模式+面向服务架构) 卷3

    pattern/src/creation/abstractfactory //11.2抽象工厂模式 pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 ...

    java高手真经 (UML建模+设计模式+面向服务架构) 卷1

    pattern/src/creation/abstractfactory //11.2抽象工厂模式 pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 ...

    java高手真经 (UML建模+设计模式+面向服务架构) 卷9

    综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...

    饮料商城系统源代码和报告(本次实验要求使用几种特定的设计模式,完成业务功能完整的应用程序)

    (1)原型模式。当需要大量相同或相似的对象时,原型模式是最佳选择。原型模式通过在内存中复制对象,比直接创建新对象更...在本系统中,抽象工厂模式的实现涉及到可乐生产工厂类、百事可乐类、可口可乐类等。 (4)

    java高手真经 (UML建模+设计模式+面向服务架构) 卷10

    综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/...

Global site tag (gtag.js) - Google Analytics