Java享元模式(FlyWeight)

/**

  • 享元类

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

public interface ChessFlyWeight {

void setColor(String c);

String getColor();

void display(Coordinate c);

}

/**

  • 棋子 具体实现类

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

class ConcreteChess implements ChessFlyWeight {

private String color;

public ConcreteChess(String color) {

super();

this.color = color;

}

@Override

public void display(Coordinate c) {

System.out.println(“棋子颜色:”+color);

System.out.println(“棋子位置:”+c.getX()+“----”+c.getY());

}

@Override

public String getColor() {

return color;

}

@Override

public void setColor(String c) {

this.color = c;

}

}

外部状态

/**

  • 外部状态UnSharedConcreteFlyWeight

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

public class Coordinate {

private int x,y;

public Coordinate(int x, int y) {

super();

this.x = x;

this.y = y;

}

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

}

享元工厂类

/**

*享元工厂类

  • 创建棋子

  • @author 波波烤鸭

  • @email dengpbs@163.com

*/

public class ChessFlyWeightFactory {

//享元池 根据颜色保存不同的棋子对象

private static Map<String,ChessFlyWeight> map = new HashMap<String, ChessFlyWeight>();

public static ChessFlyWeight getChess(String color){

// 如果已经存在该颜色的棋子返回

if(map.get(color)!=null){

return map.get(color);

}else{

// 如果享元池中没有该颜色的棋子就创建一个新的返回 并存储在享元池中

ChessFlyWeight cfw = new ConcreteChess(color);

map.put(color, cfw);

return cfw;

}

}

}

测试类

public class Client {

public static void main(String[] args) {

ChessFlyWeight chess1 = ChessFlyWeightFactory.getChess(“黑色”);

ChessFlyWeight chess2 = ChessFlyWeightFactory.getChess(“黑色”);

ChessFlyWeight chess3 = ChessFlyWeightFactory.getChess(“白色”);

System.out.println(chess1);

System.out.println(chess2);

System.out.println(chess3);

System.out.println(“增加外部状态的处理===========”);

chess1.display(new Coordinate(10, 10));

chess2.display(new Coordinate(20, 20));

}

}

输出结果:

com.bjsxt.flyweight.ConcreteChess@15db9742

com.bjsxt.flyweight.ConcreteChess@15db9742

com.bjsxt.flyweight.ConcreteChess@6d06d69c

增加外部状态的处理===========

棋子颜色:黑色

棋子位置:10----10

棋子颜色:黑色

棋子位置:20----20

Spring全套教学资料

Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。

目录:

部分内容:

Spring源码

  • 第一部分 Spring 概述
  • 第二部分 核心思想
  • 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
  • 第四部分 Spring IOC 高级应用
    基础特性
    高级特性
  • 第五部分 Spring IOC源码深度剖析
    设计优雅
    设计模式
    注意:原则、方法和技巧
  • 第六部分 Spring AOP 应用
    声明事务控制
  • 第七部分 Spring AOP源码深度剖析
    必要的笔记、必要的图、通俗易懂的语言化解知识难点

脚手框架:SpringBoot技术

它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。

Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。

  • SpringBoot入门
  • 配置文件
  • 日志
  • Web开发
  • Docker
  • SpringBoot与数据访问
  • 启动配置原理
  • 自定义starter

微服务架构:Spring Cloud Alibaba

同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

  • 微服务架构介绍
  • Spring Cloud Alibaba介绍
  • 微服务环境搭建
  • 服务治理
  • 服务容错
  • 服务网关
  • 链路追踪
  • ZipKin集成及数据持久化
  • 消息驱动
  • 短信服务
  • Nacos Confifig—服务配置
  • Seata—分布式事务
  • Dubbo—rpc通信

Spring MVC

目录:

部分内容:

Seata—分布式事务

  • Dubbo—rpc通信

[外链图片转存中…(img-FMoJDMLH-1723295762382)]

[外链图片转存中…(img-Riz8Q1c4-1723295762383)]

Spring MVC

目录:

[外链图片转存中…(img-IGNsbfAi-1723295762383)]

[外链图片转存中…(img-aXGTNvQC-1723295762383)]

[外链图片转存中…(img-afVmkOJB-1723295762383)]

部分内容:

[外链图片转存中…(img-JqEmXtM4-1723295762384)]

[外链图片转存中…(img-a1o2LjFo-1723295762384)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值