zoukankan      html  css  js  c++  java
  • 面试题复习-常用设计模式-抽象工厂模式

    抽象工厂与产品:

    package com.ajax.pattern.abstractfactory;
    
    public interface FruitFactory {
        /**
         * 果肉
         * @return
         */
        Meat getMeat();
    
        /**
         * 果皮
         * @return
         */
        Skin getSkin();
    }
    package com.ajax.pattern.abstractfactory;
    
    public abstract class Meat {
         abstract void desc();
    }
    package com.ajax.pattern.abstractfactory;
    
    public abstract class Skin {
        abstract void desc();
    }

    第一套产品:

    package com.ajax.pattern.abstractfactory;
    
    public class AppleMeat extends Meat {
        @Override
        void desc() {
            System.out.println("苹果肉");
        }
    }
    package com.ajax.pattern.abstractfactory;
    
    public class AppleSkin extends Skin {
        @Override
        void desc() {
            System.out.println("苹果皮");
        }
    }

    第二套产品:

    package com.ajax.pattern.abstractfactory;
    
    public class OrangeMeat extends Meat {
        @Override
        void desc() {
            System.out.println("橙肉");
        }
    }
    package com.ajax.pattern.abstractfactory;
    
    public class OrangeSkin extends Skin {
        @Override
        void desc() {
            System.out.println("橙皮");
        }
    }

    抽象工厂实现:

    package com.ajax.pattern.abstractfactory;
    
    public class AppleFactory implements FruitFactory {
        @Override
        public Meat getMeat() {
            return new AppleMeat();
        }
    
        @Override
        public Skin getSkin() {
            return new AppleSkin();
        }
    }
    package com.ajax.pattern.abstractfactory;
    
    public class OrangeFactory implements FruitFactory {
        @Override
        public Meat getMeat() {
            return new OrangeMeat();
        }
    
        @Override
        public Skin getSkin() {
            return new OrangeSkin();
        }
    }

    运行:

    package com.ajax.pattern.abstractfactory;
    
    public class Run {
        public static void main(String[] args) {
            FruitFactory f1 = new AppleFactory();
            f1.getMeat().desc();
            f1.getSkin().desc();
            FruitFactory f2 = new OrangeFactory();
            f2.getMeat().desc();
            f2.getSkin().desc();
        }
    }
  • 相关阅读:
    Linux 服务器 个人常用操作命令记录
    Thinkphp5.0 自定义命令command的使用
    vue初学之node.js安装、cnpm安装、vue初体验
    php实现在不同国家显示网站的不同语言版本
    array_map、array_walk、array_filter三个函数的区别
    实现简单点赞功能
    SQL语言-----数据操作
    SQL语言
    MySQL高可用架构之Keepalived+主从架构部署
    MyCAT源码分析——分析环境部署
  • 原文地址:https://www.cnblogs.com/caizhiqin/p/11290350.html
Copyright © 2011-2022 走看看