博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 之享元模式
阅读量:7250 次
发布时间:2019-06-29

本文共 1541 字,大约阅读时间需要 5 分钟。

hot3.png

 

public interface Flyweight {    public void operation(String state);}public class ConcreteFlyweight implements Flyweight {    private Character intrinsicState = null;    /**     * 构造函数,内蕴状态作为参数传入     *      * @param state     */    public ConcreteFlyweight(Character state) {        this.intrinsicState = state;    }    /**     * 外蕴状态作为参数传入方法中,改变方法的行为, 但是并不改变对象的内蕴状态。     */    @Override    public void operation(String state) {        // TODO Auto-generated method stub        System.out.println("Intrinsic State = " + this.intrinsicState);        System.out.println("Extrinsic State = " + state);    }}public class FlyweightFactory {    private Map
files = new HashMap
(); public Flyweight factory(Character state) { // 先从缓存中查找对象 Flyweight fly = files.get(state); if (fly == null) { // 如果对象不存在则创建一个新的Flyweight对象 fly = new ConcreteFlyweight(state); // 把这个新的Flyweight对象添加到缓存中 files.put(state, fly); } return fly; }}public class Client { public static void main(String[] args) { // TODO Auto-generated method stub FlyweightFactory factory = new FlyweightFactory(); Flyweight fly = factory.factory(new Character('a')); fly.operation("First Call"); fly = factory.factory(new Character('b')); fly.operation("Second Call"); fly = factory.factory(new Character('a')); fly.operation("Third Call"); }}

学习设计模式强烈推荐的博客:

代码地址:

转载于:https://my.oschina.net/u/1589819/blog/1561007

你可能感兴趣的文章
AGG第三十八课 一些不常用的坐标转换管道
查看>>
实战案例:创建支持SSH服务的镜像
查看>>
Fiddler Web Debugger简单调试头部参数
查看>>
Linux环境下发布项目(Tomcat重新启动)
查看>>
centos7配置svn服务器
查看>>
亮剑:PHP,我的未来不是梦(13)
查看>>
MYSQL主从数据同步
查看>>
javascript数组操作
查看>>
linux中父进程退出时如何通知子进程
查看>>
linux 缩减文件系统大小 LVM
查看>>
对比文件md5值实现去重文件
查看>>
C#设计模式之二十三解释器模式(Interpreter Pattern)【行为型】
查看>>
js处理中文乱码记录/nodejs+express error 413
查看>>
基于Keepalived实现LVS双主高可用集群
查看>>
SqlServer 使用脚本创建分发服务及事务复制的可更新订阅
查看>>
什么是Floating (浮动)规则?
查看>>
分布式文件系统-FastDFS
查看>>
HTML5 rotate 做仪表盘
查看>>
为什么说荆州松滋刘氏采穴堂是刘开七、刘广传的后裔
查看>>
React中使用Ant Table组件
查看>>