抽象工厂
来源:互联网 发布:游戏交易平台源码 编辑:程序博客网 时间:2024/06/03 11:17
抽象工厂是围绕一个超级工厂创建其他工厂。
1.创建接口
//shapepublic interface Shape { void draw();}//colorpublic interface Color { void fill();}
2.创建实现类
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 class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle::draw() method."); }}----------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 class Blue implements Color { @Override public void fill() { System.out.println("Inside Blue::fill() method."); }}
3.创建获取接口的抽象类工厂,
public abstract class AbstractFactory { abstract Color getColor(String color); abstract Shape getShape(String shape) ;}
4.创建每一个接口对应的工厂实现类。
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(); } else if(shapeType.equalsIgnoreCase("SQUARE")){ return new Square(); } return null; } @Override Color getColor(String color) { return null; }}public class ColorFactory extends AbstractFactory { @Override public Shape getShape(String shapeType){ return null; } @Override Color getColor(String color) { if(color == null){ return null; } if(color.equalsIgnoreCase("RED")){ return new Red(); } else if(color.equalsIgnoreCase("GREEN")){ return new Green(); } else if(color.equalsIgnoreCase("BLUE")){ return new Blue(); } return null; }}
5.创建一个工厂创造器
public class FactoryProducer { public static AbstractFactory getFactory(String choice){ if(choice.equalsIgnoreCase("SHAPE")){ return new ShapeFactory(); } else if(choice.equalsIgnoreCase("COLOR")){ return new ColorFactory(); } return null; }}
6.使用抽象工厂
public class AbstractFactoryPatternDemo { public static void main(String[] args) { //获取形状工厂 AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE"); //获取形状为 Circle 的对象 Shape shape1 = shapeFactory.getShape("CIRCLE"); //调用 Circle 的 draw 方法 shape1.draw(); //获取形状为 Rectangle 的对象 Shape shape2 = shapeFactory.getShape("RECTANGLE"); //调用 Rectangle 的 draw 方法 shape2.draw(); //获取形状为 Square 的对象 Shape shape3 = shapeFactory.getShape("SQUARE"); //调用 Square 的 draw 方法 shape3.draw(); //获取颜色工厂 AbstractFactory colorFactory = FactoryProducer.getFactory("COLOR"); //获取颜色为 Red 的对象 Color color1 = colorFactory.getColor("RED"); //调用 Red 的 fill 方法 color1.fill(); //获取颜色为 Green 的对象 Color color2 = colorFactory.getColor("Green"); //调用 Green 的 fill 方法 color2.fill(); //获取颜色为 Blue 的对象 Color color3 = colorFactory.getColor("BLUE"); //调用 Blue 的 fill 方法 color3.fill(); }}
工厂模式:告诉工厂产品名字-得到产品
抽象工厂:告诉抽象工厂工厂名字-得到工厂-告诉工厂产品名字-得到产品。
阅读全文
0 0
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 抽象工厂
- 在回调API提供方不确定提供数据的形式的时候,判断数据是怎么提交过来的
- Java
- vedio转gif
- Socket 使用select()非阻塞方式实现
- 【我的Java笔记】API的建成(工具类)
- 抽象工厂
- Java 中的转义字符
- Eclipse debug技巧
- sql中的null,'',isnull()的区分
- PullToRefresh
- 集合的区别
- 1048. 数字加密(20)
- android之渐变色背景
- Java Security Architecture--Java安全体系技术文档翻译(五)