Java设计模式之抽象工厂模式
发布日期:2021-10-23 14:13:09 浏览次数:15 分类:技术文章

本文共 2885 字,大约阅读时间需要 9 分钟。

一、什么是抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的。抽象工厂模式可以向客户端提供一个借口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。

Fruit接口

public interface Fruit {    /*     * 采集     */    public void get();}

Apple抽象类

public abstract class Apple implements Fruit{    /*     * 采集     */    public abstract void get();}

Banana抽象类

public abstract class Banana implements Fruit{    /*     * 采集     */    public abstract void get();}

FruitFactory工厂类

public interface FruitFactory {    //实例化Apple    public Fruit getApple();    //实例化Banana    public Fruit getBanana();}

NorthFruitFactory南方工厂

public class NorthFruitFactory implements FruitFactory {    public Fruit getApple() {        return new NorthApple();    }    public Fruit getBanana() {        return new NorthBanana();    }}

SouthFruitFactory工厂类

public class SouthFruitFactory implements FruitFactory {    public Fruit getApple() {        return new SouthApple();    }    public Fruit getBanana() {        return new SouthBanana();    }}

NorthApple北方苹果类

public class NorthApple extends Apple {    public void get() {        System.out.println("采集北方苹果");    }}

NorthBanana北方香蕉

public class NorthBanana extends Banana {    public void get() {        System.out.println("采集北方香蕉");    }}
SouthApple 南方苹果
public class SouthApple extends Apple {    public void get() {        System.out.println("采集南方苹果");    }}
SouthBanana 南方香蕉
public class SouthBanana extends Banana {    public void get() {        System.out.println("采集南方香蕉");    }}

如果我们增加一个新的温室系列产品则只需要新增

WenshiFruitFactory 温室工厂
public class WenshiFruitFactory implements FruitFactory {    public Fruit getApple() {        return new WenshiApple();    }    public Fruit getBanana() {        return new WenshiBanana();    }}
WenshiApple 温室苹果
public class WenshiApple extends Apple {    public void get() {        System.out.println("采集温室苹果");    }}
WenshiBanana 温室香蕉
public class WenshiBanana extends Banana {    public void get() {        System.out.println("采集温室香蕉");    }}

 

测试类mainclass

public class MainClass {    public static void main(String[] args) {        FruitFactory ff = new NorthFruitFactory();        Fruit apple = ff.getApple();        apple.get();                Fruit banana = ff.getBanana();        banana.get();                FruitFactory ff2= new SouthFruitFactory();        Fruit apple2 = ff2.getApple();        apple2.get();                Fruit banana2 = ff2.getBanana();        banana2.get();                FruitFactory ff3 = new WenshiFruitFactory();        Fruit apple3 = ff3.getApple();        apple3.get();                Fruit banana3 = ff3.getBanana();        banana3.get();    }}

 

二、模式中包含的角色及其职责

 

1.抽象工厂(Creator)角色

抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete  Creator)角色
具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色
抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
4.具体产品(Concrete Product)角色
抽象模式所创建的具体实例对象
总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。

 

转载于:https://www.cnblogs.com/LT0314/p/3894464.html

转载地址:https://blog.csdn.net/weixin_30588827/article/details/98927741 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JS、JQuery 获得各种高度,宽度
下一篇:我的踩坑之旅-跨域问题引发bug

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月02日 16时56分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章