享元模式flyweight

本文介绍了享元模式的基本概念,区分了内蕴状态和外蕴状态,并通过具体字符类的实例展示了如何实现共享对象以提高效率。
享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。


外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态与内蕴状态是相互独立的。


public abstract class Charactor{
    //属性
    protected char letter;
    protected int fontsize;
    //显示方法
public abstract void display();
//设置字体大小
public abstract void setFontSize(int fontsize);
}
//具体的字符类A
public class CharactorA extends Charactor{
    //构造函数
    public CharactorA(){
        this.letter = 'A';
        this.fontsize = 12;
    }
    //显示方法
    public void display(){
    try{
        System.out.println(this.letter);
    }catch(Exception err){
    }
}
//设置字体大小
public void setFontSize(int fontsize){
    this.fontsize = fontsize;
}
}
//具体的字符类B
public class CharactorB extends Charactor{
    //构造函数
    public CharactorB(){
        this.letter = 'B';
        this.fontsize = 12;
    }
    //显示方法
    public void display(){
    try{
        System.out.println(this.letter);
    }catch(Exception err){
    }
}
//设置字体大小
public void setFontSize(int fontsize){
    this.fontsize = fontsize;
}
}
//客户程序
public class ClinetTest{
public static void main(String[] args){
Charactor a = new CharactorA();
Charactor b = new CharactorB();
//设置字符A的大小
a.setFontSize(12);
        //显示字符B
        a.display();
//设置字符B的大小
b.setFontSize(14);
        //显示字符B
b.display();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值