当前位置: 首页 > article >正文

面试手撕代码-二十三种设计模式之享元模式

package com.study.handcode.设计模式.结构性模式;

import java.util.HashMap;
import java.util.Map;

public class 二十三种设计模式之享元模式 {
    public static void main(String[] args) {
        /**
         * 1、享元模式:避免重复构建对象,加了一个缓存
         * 2、例子:Integer类中有一个valueof方法,会判断大小是否-127—128,在 则直接在从catch中
         * 3、结构:抽象享元角色、具体享元、非享元角色、享元工厂
         */
         // 举例:俄罗斯方块中,各个形状的存储
//        AbstractBox l = new LBox();
        System.out.println(BoxFactory.getBox("L") == BoxFactory.getBox("L"));
    }

    // 抽象享元角色
    static abstract class AbstractBox{
        private String shape;

        public AbstractBox(String shape) {
            this.shape = shape;
        }

        public String getShape(){
            return shape;
        };
    }
    // 具体享元
    static class LBox extends AbstractBox {
        public LBox() {
            super("L");
        }
    }
    // 享元工厂
    static class BoxFactory{
        static Map<String, AbstractBox> map = new HashMap<>();
        static {
            map.put("L", new LBox());
        }

        public static AbstractBox getBox(String key){
            AbstractBox abstractBox = map.get(key);
            if (abstractBox!=null){
                return abstractBox;
            }else {
                // 可以建立非共享类
                throw new RuntimeException("没有该类型");
            }
        }
    }
}


http://www.kler.cn/news/357449.html

相关文章:

  • 计算机组成原理(笔记7高速缓冲存储器Cache,计算机组成原理的重难点全、直接、组相连)
  • 探索 Python 中的 XML 转换利器:xml2dict
  • 量子门电路开销——T门、clifford门、toffoli门、fredkin门
  • AutoFixture:.NET 的假数据生成工具
  • 道路垃圾识别数据集 含pt模型界面 18类 共7542张图片,xml和txt标签都有;
  • 安全光幕的工作原理及应用场景
  • 域7:安全运营 第18章(DRP)和第19章 (Investigation and Ethics)
  • Java中的Math类
  • 五、事务和并发控制及索引和性能优化
  • 大幅降低人工核验遗漏的概率,降低出错风险的智慧能源开源了
  • 笔记:SOME/IP-SD报文中的TTL
  • 智能取暖桌:以九芯电子NRK3502语音识别芯片提升用户体验
  • rom定制系列------小米6x_MIUI14_安卓13刷机包修改写入以及功能定制 界面预览
  • 鸿蒙网络编程系列12-使用Request部件下载文件到本地示例
  • 【VUE】Vue中常用的修饰符
  • Rust虚拟机Demo
  • 案例分享-优秀蓝色系UI界面赏析
  • 探索C#编程基础:从输入验证到杨辉三角的生成
  • oracle的定时器
  • springboot037基于SpringBoot的墙绘产品展示交易平台的设计与实现(论文+源码)_kaic