设计模式---抽象工厂
来源:互联网 发布:l36h刷机软件 编辑:程序博客网 时间:2024/06/15 05:48
建立两个接口
public interface Shape { void draw();}
public interface Color { void fill();}/////////////////////////////////////////////////////////////////////////////////
分别实现上面的两个接口
public class Square implements Shape { @Override public void draw() { System.out.println("画个正方形"); }}
public class Circle implements Shape { @Override public void draw() { System.out.println("画个圆"); }}
//////////////////////////////////////////////////////////////////////////////public class Red implements Color{ @Override public void fill() { System.out.println("图成红色"); }}public class Green implements Color{ @Override public void fill() { System.out.println("图成绿色"); }}
设置一个抽象工厂
public abstract class AbstractFactory { abstract Color getColor(String color); abstract Shape getShape(String shape);}//////////////////////////////////////////////////////////////////////////
public class FactoryProducer { public static AbstractFactory getFactory(String choies) { if (choies.equalsIgnoreCase("shape")) { return new ShapeFactory(); } else if (choies.equalsIgnoreCase("color")) { return new ColorFactory(); } return null; }}/////////////////////////////////////////////////////////////////////////
继承抽象工厂,重写里面的方法,根据参数便于创建合适的实例
public class ShapeFactory extends AbstractFactory { @Override Shape getShape(String shape) { if (shape.equalsIgnoreCase("square")) { return new Square(); } else if(shape.equalsIgnoreCase("circle")) { return new Circle(); } return null; } @Override Color getColor(String color) { return null; }}
public class ColorFactory extends AbstractFactory { @Override Color getColor(String color) { if (color.equalsIgnoreCase("red")) { return new Red(); } else if (color.equalsIgnoreCase("green")) { return new Green(); } return null; } @Override Shape getShape(String shape) { return null; }}
//////////////////////////
public class Test { public static void main(String[] args) { AbstractFactory shapeFactory = FactoryProducer.getFactory("shape"); Shape shape1 = shapeFactory.getShape("square"); Shape shape2 = shapeFactory.getShape("circle"); shape1.draw(); shape2.draw(); AbstractFactory colorFactory = FactoryProducer.getFactory("color"); Color color1 = colorFactory.getColor("red"); Color color2 = colorFactory.getColor("green"); color1.fill(); color2.fill(); }}
阅读全文
0 0
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- 抽象工厂设计模式
- 设计模式--抽象工厂
- 【设计模式】抽象工厂
- 设计模式---抽象工厂
- 【设计模式-抽象工厂】
- 设计模式-抽象工厂
- 设计模式--抽象工厂
- 计算几何(point&line)红书模板
- 【JDK源码分析】String的存储区与不可变性
- SQL数据库中表的增删改除四种基本操作与逻辑表达式
- 挂缀codevs2382
- eclipse中解除jdk的访问限制(以BASE64Encoder/BASE64Decoder为例)
- 设计模式---抽象工厂
- matplotlib.pyplot与cv2、Image.open 读取图片显示的差异
- PHP删除字符串最后一个字符
- IIS中多个版本php共存的方法,IIS如何快速搭建PHP网站,多个php实现共存的神器!
- MySQL性能优化的最佳20+条经验
- 基础很重要~~04.表表达式-上篇
- Java多线程学习(吐血超详细总结)
- 百度地图点击地图,标点并显示地址信息
- Java集合框架源码解析-TreeSet