标签:ali 测试 system abs gre rri 种类型 over 创建
一.抽象工厂模式定义:
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
二.抽象工厂包含的角色:
抽象工厂:声明一组用于创建一族产品的方法,每个方法对应一种对象;在抽象工厂中声明了多个工厂方法, 用于创建不同类型的对象, 抽象工厂可以是接口, 也可以是抽象类或者具体类。
具体工厂:具体工厂实现了抽象工厂,每个工厂方法返回一个具体对象,一个具体工厂所创建的具体对象构成一个族。
抽象类接口:提供一组所有类都具有的业务方法。
抽象类:用于实现抽象接口所定义的业务方法,但是该角色对于抽象接口定义的方法只做抽象实现,即所有实现都被定义为抽象方法,最终的具体实现全部交给具体类实现。引入该角色主要是为了根据声明不同的抽象类,将类区分为不同的等级结构。
具体类:该角色继承抽象类,主要用于实现抽象类中声明的抽象方法,完成不同等级结构,不同族的业务方法的具体实现。
三. 具体场景:
在我们常用的社交软件中,为了满足客户交流时的舒适需求,会添加一些改变背景或者皮肤的功能,这些功能必然会包含改变颜色,改变形状等等功能的代码,下面我们就用抽象工厂模式代码来实现这个需求。
四. 代码实现:
设计抽象接口:
public interface Shape {
void draw();
}
//圆形抽象类Circle
public abstract class Circle implements Shape {
public abstract void draw();
}
//长方形抽象类Rectange
public abstract class Rectange implements Shape {
public abstract void draw();
}
具体的实现类继承自对应的抽象类:
//具体颜色的Circle实现
public class BlueCircle extends Circle {
@Override
public void draw() {
System.out.println("绘制蓝色的圆");
}
}
public class RedCircle extends Circle {
@Override
public void draw() {
System.out.println("绘制红色的圆");
}
}
//具体颜色的Rectange实现
public class RedRectange extends Rectange{
@Override
public void draw() {
System.out.println("绘制红色长方形");
}
}
public class BlueRectange extends Rectange {
@Override
public void draw() {
System.out.println("绘制蓝色长方形");
}
}
具体类族的划分我们以颜色为基础,不同类族的对象我们通过对应的具体工厂来创建。
//抽象工厂ShapeFactory
public interface ShapeFactory {
Shape getCircle();
Shape getRectange();
}
//RedShapeFactory(他所代表的是红色形状这一族)
public class RedShapeFactory implements ShapeFactory {
@Override
public Shape getCircle() {
return new RedCircle();
}
@Override
public Shape getRectange() {
return new RedRectange();
}
}
//BlueShapeFactory(他所代表的是兰色形状这一族)
public class BlueShapeFactory implements ShapeFactory {
@Override
public Shape getCircle() {
return new BlueCircle();
}
@Override
public Shape getRectange() {
return new BlueRectange();
}
}
测试实现工厂模式:
public class TestDemo {
public static void main(String[] args) {
ShapeFactory redShapeFactory = new RedShapeFactory();
Shape circle = redShapeFactory.getCircle();
circle.draw();
Shape rectangle = redShapeFactory.getRectange();
rectangle.draw();
ShapeFactory greenShapeFactory = new GreenShapeFactory();
Shape greenCircle = greenShapeFactory.getCircle();
greenCircle.draw();
}
}
标签:ali 测试 system abs gre rri 种类型 over 创建
原文地址:https://www.cnblogs.com/dhy970218/p/12005557.html