Java设计模式【三】:抽象工厂模式

Java设计模式【三】:抽象工厂模式抽象工厂模式是围绕一个超级工厂来创建其他工厂,相等于在工厂模式基础上再次创建了一个工厂,用于统筹各个工厂的工厂。

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

写在前面

设计模式,其实在一定程度上代表着最优解,最佳实践,由一部分开发人员根据经验总结而出的解决方案,分别针对不同的场景的最优解决方案。

在当前环境下,设计模式也被开发人员极为推崇,并且利用其解决众多的问题,所以,学习设计模式刻不容缓。

下面我们就来看一下“抽象工厂模式”。

抽象工厂模式是围绕一个超级工厂来创建其他工厂,相等于在工厂模式基础上再次创建了一个工厂,用于统筹各个工厂的工厂。

同样也是创建型设计模式。

使用场景

在我们做系列操作时,可以使用抽象工厂模式,调用一个方法,使用同一个对象就可以执行内部一连串的操作。

优缺点

优点就是当执行一系列操作时,抽象工厂模式可以做到使用同一个对象就可以对系列操作进行执行。

缺点就是扩展起来比较复杂,需要在多个类中增加代码。

代码实现

第一步,声明接口

public interface Shape {
    void draw();
}

第二步,实现接口。

public class Rectangle implements Shape {

    @Override
    public void draw() {
        System.out.println("Inside Rectangle::draw() method.");
    }
}
public class Square implements Shape {

    @Override
    public void draw() {
        System.out.println("Inside Square::draw() method.");
    }
}

第三步,创建一个颜色接口。

public interface Color {
    void fill();
}

第四步,创建颜色接口的实现类。

public class Red implements Color {

    @Override
    public void fill() {
        System.out.println("Inside Red::fill() method.");
    }
}
public class Green implements Color {

    @Override
    public void fill() {
        System.out.println("Inside Green::fill() method.");
    }
}

第五步,为形状类和颜色类创建相应的工厂抽象类。

public abstract class AbstractFactory {
    public abstract Color getColor(String color);
    public abstract Shape getShape(String shape) ;
}

第六步,创建第五步的工厂类。

public class ShapeFactory extends AbstractFactory {

    @Override
    public Shape getShape(String shapeType){
        if(shapeType == null){
            return null;
        }
        if(shapeType.equalsIgnoreCase("CIRCLE")){
            return new Circle();
        } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
            return new Rectangle();
        }
        return null;
    }

    @Override
    public Color getColor(String color) {
        return null;
    }
}

今天的文章Java设计模式【三】:抽象工厂模式分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/18768.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注