【设计模式】共享模式

一、共享模式
共享模式:运用共享技术有效的支持大量细粒度的对象

//Flyweigth类,具有所有享元类的超类或接口

abstract class Flyweigth{
public abstract void Oeperation(int extrinsicstate);
}

//ConcreteFlyweigth是继承Flyweigth超累或实现接口,并为内部状态增加存储空间

class ConcreteFlyweigth extends Flyweigth{

public void Oeperation(int extrinsicstate) {
	// TODO Auto-generated method stub
	System.out.println("具体Flyweigtj"+extrinsicstate);
}

}

//UnsharedConcreteFlyweigth是指那些不需要共享的Flyweigth子类。

class UnsharedConcreteFlyweigth extends Flyweigth{
public void Oeperation(int extrinsicstate) {
// TODO Auto-generated method stub
System.out.println(“不具体Flyweigth”+extrinsicstate);
}

}

//FlyweigthFactory是Flyweigth的工厂类,用来创建和管理Flyweigth对象,主要用来确保合理地共享Flyweigth。

class FlyweigthFactory{
private Hashtable flyweigths=new Hashtable();

public FlyweigthFactory() {
    //初始化工厂时,先生成三个实例。
	flyweigths.Add("X",new ConcreteFlyweigth());
	flyweigths.Add("Y",new ConcreteFlyweigth());
	flyweigths.Add("Z",new ConcreteFlyweigth());
}

public Flyweigth GetFlyweigth(String key) {
	return (Flyweigth)flyweigth[key];

//根据客户端需要获取已生成地实例
}
}
public class xy {

public static void main(String[] args) {
	// TODO Auto-generated method stub
    int extrinsicstate=22;

//代码外部状态

    FlyweigthFactory f-new FlyweigthFactory();
    
    Flyweigth fx=f.GetFlyweigth("X");
    fx.Oeperation(extrinsicstate);
    
    Flyweigth fy=f.GetFlyweigth("Y");
    fy.Oeperation(extrinsicstate);
    
    Flyweigth fz=f.GetFlyweigth("Z");
    fz.Oeperation(extrinsicstate);
    
    UnsharedConcreteFlyweigth uf=new UnsharedConcreteFlyweigth();
    uf.Oeperation(extrinsicstate);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值