享元设计模式

java 复制代码
package com.jmj.pattern.flyweight;

public abstract class AbstractBox {

    //获取图形的方法
    public abstract String getShape();

    //显示图形及颜色
    public void diplay(String color){
        System.out.println("方块形状:"+getShape()+",颜色:"+color);
    }




}
java 复制代码
package com.jmj.pattern.flyweight;

import java.util.HashMap;

/**
 * 将该类设计为工厂类 单例模式
 */
public class BoxFactory {

    private HashMap<String,AbstractBox> map;

    private BoxFactory(){
        map =new HashMap<>();
        map.put("I",new IBox());
        map.put("O",new OBox());
        map.put("L",new LBox());
    }

    //提供一个方法获取该工厂类对象
    public static BoxFactory getInstance(){
        return boxFactory;
    }
    private static BoxFactory boxFactory=new BoxFactory();

    public AbstractBox getShape(String name){
        return map.get(name);
    }


}
java 复制代码
package com.jmj.pattern.flyweight;

public class IBox extends AbstractBox{
    @Override
    public String getShape() {
         return "I";
    }
}
java 复制代码
package com.jmj.pattern.flyweight;

public class LBox extends AbstractBox{
    @Override
    public String getShape() {
         return "L";
    }
}
java 复制代码
package com.jmj.pattern.flyweight;

public class OBox extends AbstractBox{
    @Override
    public String getShape() {
         return "O";
    }
}
java 复制代码
package com.jmj.pattern.flyweight;

public class Client {
    public static void main(String[] args) {
        AbstractBox i = BoxFactory.getInstance().getShape("I");
        i.diplay("灰色");
        AbstractBox l = BoxFactory.getInstance().getShape("L");
        l.diplay("灰色");
        AbstractBox o = BoxFactory.getInstance().getShape("O");
        o.diplay("灰色");
        AbstractBox a = BoxFactory.getInstance().getShape("I");
        a.diplay("红色");
        System.out.println(i==a);
    }
}
相关推荐
自由随风飘1 天前
python 题目练习1~5
开发语言·python
cynicme1 天前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
Bony-1 天前
Go语言完全学习指南 - 从基础到精通------语言基础篇
服务器·开发语言·golang
青云交1 天前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu1 天前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
fl1768311 天前
基于python的天气预报系统设计和可视化数据分析源码+报告
开发语言·python·数据分析
Lei活在当下1 天前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
ACP广源盛139246256731 天前
(ACP广源盛)GSV6172---MIPI/LVDS 信号转换为 Type-C/DisplayPort 1.4/HDMI 2.0 并集成嵌入式 MCU
c语言·开发语言·单片机·嵌入式硬件·音视频
不穿格子的程序员1 天前
从零开始刷算法-栈-括号匹配
java·开发语言·
雪域迷影1 天前
C#中通过get请求获取api.open-meteo.com网站的天气数据
开发语言·http·c#·get