小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
写在前面
设计模式,其实在一定程度上代表着最优解,最佳实践,由一部分开发人员根据经验总结而出的解决方案,分别针对不同的场景的最优解决方案。
在当前环境下,设计模式也被开发人员极为推崇,并且利用其解决众多的问题,所以,学习设计模式刻不容缓。
下面我们就来看一下“抽象工厂模式”。
抽象工厂模式是围绕一个超级工厂来创建其他工厂,相等于在工厂模式基础上再次创建了一个工厂,用于统筹各个工厂的工厂。
同样也是创建型设计模式。
使用场景
在我们做系列操作时,可以使用抽象工厂模式,调用一个方法,使用同一个对象就可以执行内部一连串的操作。
优缺点
优点就是当执行一系列操作时,抽象工厂模式可以做到使用同一个对象就可以对系列操作进行执行。
缺点就是扩展起来比较复杂,需要在多个类中增加代码。
代码实现
第一步,声明接口
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