• 软件设计之抽象工厂模式


    理解抽象工厂模式在于多类产品具有相同的类别就让某一工厂去生产这一类,比如夹克衫和裤子都有大号和中号的型号,那么一个工厂专门负责大号产品,一个工厂专门负责中号产品。

    下面通过这个案例说明该模式。

    1. package AbstractFactory;
    2. public class Consumer {
    3. public static void main(String[] args) {
    4. Factory ft;
    5. Jacket jk;
    6. Trousers ts;
    7. ft = Factory.getFactory("Medium");
    8. jk = ft.getJacket();
    9. ts = ft.getTrousers();
    10. jk.getInfo();
    11. ts.getInfo();
    12. ft = Factory.getFactory("Super");
    13. jk = ft.getJacket();
    14. ts = ft.getTrousers();
    15. jk.getInfo();
    16. ts.getInfo();
    17. }
    18. }
    1. package AbstractFactory;
    2. public abstract class Factory {
    3. public static final String SUPER = "Super";
    4. public static final String MEDIUM = "Medium";
    5. public abstract Jacket getJacket();
    6. public abstract Trousers getTrousers();
    7. public static Factory getFactory(String s) {
    8. Factory ft = null;
    9. if(s.equals(SUPER)) ft = new SuperFactory();
    10. if(s.equals(MEDIUM)) ft = new MediumFactory();
    11. return ft;
    12. }
    13. }
    1. package AbstractFactory;
    2. public interface Jacket {
    3. void getInfo();
    4. }
    1. package AbstractFactory;
    2. public class MediumFactory extends Factory{
    3. public Jacket getJacket() {
    4. return new MediumJacket();
    5. }
    6. public Trousers getTrousers() {
    7. return new MediumTrousers();
    8. }
    9. }
    1. package AbstractFactory;
    2. public class MediumJacket implements Jacket{
    3. @Override
    4. public void getInfo() {
    5. System.out.println("生产了一件中号短上衣");
    6. }
    7. }
    1. package AbstractFactory;
    2. public class MediumTrousers implements Trousers{
    3. @Override
    4. public void getInfo() {
    5. System.out.println("生产了一件中号裤子");
    6. }
    7. }
    1. package AbstractFactory;
    2. public class SuperFactory extends Factory{
    3. public Jacket getJacket() {
    4. return new SuperJacket();
    5. }
    6. public Trousers getTrousers() {
    7. return new SuperTrousers();
    8. }
    9. }
    1. package AbstractFactory;
    2. public class SuperJacket implements Jacket{
    3. @Override
    4. public void getInfo() {
    5. System.out.println("生产了一件大号短上衣");
    6. }
    7. }
    1. package AbstractFactory;
    2. public class SuperTrousers implements Trousers{
    3. @Override
    4. public void getInfo() {
    5. System.out.println("生产了一件大号裤子");
    6. }
    7. }
    1. package AbstractFactory;
    2. public interface Trousers {
    3. void getInfo();
    4. }

  • 相关阅读:
    RedisSearch:一个基于Redis的搜索引擎模块
    C++小游戏视频及资料集 C语言深度剖析等
    Docker安装MySQL5.7
    python读取CSV文件并生成折线图
    【冷知识】git头像设置
    【电源专题】接地的类型
    6.28U-Net深度学习基准模型特点与应用
    houdini 粒子拖尾
    2024年申报国自然项目基金撰写及技巧
    氮杂环化合物改性磁性/多羟基化合物改性/β-二羰基接枝/三乙胺修饰聚苯乙烯微球的制备
  • 原文地址:https://blog.csdn.net/qq_63806300/article/details/133659413