当前位置: 首页 > news >正文

沈阳网站建设推广平台鼓楼网站seo搜索引擎优化

沈阳网站建设推广平台,鼓楼网站seo搜索引擎优化,做设计排版除了昵图网还有什么网站,wordpress企业授权1 享元模式介绍 2 享元模式原理 3 享元模式实现 抽象享元类可以是一个接口也可以是一个抽象类,作为所有享元类的公共父类, 主要作用是提高系统的可扩展性. //* 抽象享元类 public abstract class Flyweight {public abstract void operation(String extrinsicState); }具体享…
1 享元模式介绍

在这里插入图片描述
在这里插入图片描述

2 享元模式原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 享元模式实现

抽象享元类可以是一个接口也可以是一个抽象类,作为所有享元类的公共父类, 主要作用是提高系统的可扩展性.

//* 抽象享元类
public abstract class Flyweight {public abstract void operation(String extrinsicState);
}

具体享元类
具体享元类中要将内部状态和外部状态分开处理,内部状态作为具体享元类的成员变量,而外部状态通过注入的方式添加到具体享元类中.

/*** 可共享的-具体享元类* 注意: 在具体享元类中,需要将内部状态和外部状态分开处理.**/
public class ConcreteFlyweight extends Flyweight{//内部状态 : inState作为一个成员变量,同一个享元对象的内部状态是一致的.private String inState;public ConcreteFlyweight(String inState) {this.inState = inState;}/*** 外部状态在使用的时候,通常是有外部设置,不保存在享元对象中,即使是同一个对象* @param state*/@Overridepublic void operation(String state) {System.out.println("=== 享元对象的内部状态: " + inState + ",外部状态: " + state );}
}

非共享享元类,不复用享元工厂内部状态,但是是抽象享元类的子类或实现类

/*** 非共享的具体享元类**/
public class UnsharedFlyweight  extends Flyweight{private String inState;public UnsharedFlyweight(String inState) {this.inState = inState;}@Overridepublic void operation(String state) {System.out.println("=== 使用不共享对象,内部状态: " + inState + ",外部状态: " + state );}
}

享元工厂类, 管理一个享元对象类的缓存池。它会存储享元对象之间需要传递的共有状态,比如,按照大写英文字母来作为状态标识,这种只在享元对象之间传递的方式就叫内部状态。同时,它还提供了一个通用方法getFlyweight(),主要通过内部状态标识来获取享元对象。

/*** 享元工厂类* 作用: 作为存储享元对象的享元池.用户获取享元对象时先从享元池中获取,有则返回,没有创建新的返回给用户,* 并且在享元池中保存**/
public class FlyweightFactory {//定义一个Map集合用于存储享元对象,实现享元池private Map<String,Flyweight> pool = new HashMap<>();//实现享元对象之间的状态传递public FlyweightFactory() {//添加对应的内部状态pool.put("A",new ConcreteFlyweight("A"));pool.put("B",new ConcreteFlyweight("B"));pool.put("C",new ConcreteFlyweight("C"));}//根据内部状态进行查找public Flyweight getFlyweight(String key){//对象是否存在if(pool.containsKey(key)){System.out.println("=== 享元池中存在,直接复用,key : " + key);return pool.get(key);}else{//如果对象不存在,就创建一个添加到享元池,然后返回System.out.println("=== 享元池中不存在,创建并复用,key: " + key);Flyweight fw = new ConcreteFlyweight(key);pool.put(key,fw);return  fw;}}
}
public class Client {public static void main(String[] args) {//获取工厂对象FlyweightFactory factory = new FlyweightFactory();//通过工厂对象获取共享的享元对象Flyweight a1 = factory.getFlyweight("A");a1.operation("a1ExState");Flyweight a2 = factory.getFlyweight("A");a2.operation("a2ExState");System.out.println(a1 == a2);//获取非共享的享元对象UnsharedFlyweight u1 = new UnsharedFlyweight("A");UnsharedFlyweight u2 = new UnsharedFlyweight("A");System.out.println(u1 == u2);}
}
4 享元模式应用实例

在这里插入图片描述
在这里插入图片描述

/*** 抽象享元类: 五子棋**/
public abstract class GobangFlyweight {public abstract String getColor();public void display(){System.out.println("棋子颜色: " + this.getColor());}
}
/*** 共享享元类-白色棋子**/
public class WriteGobang extends GobangFlyweight {@Overridepublic String getColor() {return "白色";}
}
/*** 共享享元类-黑色棋子**/
public class BlackGobang extends GobangFlyweight {@Overridepublic String getColor() {return "黑色";}
}
/*** 享元工厂类-生产五子棋棋子**/
public class GobangFactory {//享元池private static Map<String,GobangFlyweight> pool;//创建共享享元对象,设置对象的内部状态private GobangFactory() {pool = new HashMap<>();GobangFlyweight black = new BlackGobang(); //黑子GobangFlyweight write = new WriteGobang(); //白子pool.put("b",black);pool.put("w",write);}//获取唯一享元工厂对象的方法public static GobangFactory getInstance(){return SingletonHolder.INSTANCE;}//静态内部类private static class SingletonHolder{private static final GobangFactory INSTANCE = new GobangFactory();}//通过key获取集合中的享元对象public GobangFlyweight getGobang(String key){return pool.get(key);}}
public class Client {public static void main(String[] args) {GobangFactory instance = GobangFactory.getInstance();//获取3颗黑子GobangFlyweight b1 = instance.getGobang("b");GobangFlyweight b2 = instance.getGobang("b");GobangFlyweight b3 = instance.getGobang("b");System.out.println("判断黑子是否是同一对象: " + (b1 == b2));GobangFlyweight w1 = instance.getGobang("w");GobangFlyweight w2 = instance.getGobang("w");System.out.println("判断白子是否是同一对象: " + (w1 == w2));//显示棋子b1.display();b2.display();b3.display();w1.display();w2.display();}
}

在这里插入图片描述

5 享元模式总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dt0577.cn/news/56508.html

相关文章:

  • 昆明做网站那家好品牌软文案例
  • 李洋网络做网站怎么样网络优化培训骗局
  • 动画网站建设免费学生网页制作成品代码
  • 青海省住房与城乡建设厅网站友情链接属于免费推广吗
  • 衢江网站建设网络营销软件条件
  • 临清建设局网站推广平台有哪些渠道
  • 武汉高端品牌网站建设免费域名
  • 温州网站建设小公司小红书如何引流推广
  • 网站制作优化网盘资源共享网站
  • 建设书法网站的主题是免费关键词排名优化
  • 网站信息做参考文献亚马逊seo关键词优化软件
  • 如何加强政府门户网站建设方案自助建站网
  • 石家庄做网站公司有哪些国内最新消息新闻
  • 沈阳做网站哪个好投百度做广告效果怎么样
  • 海南公司网站建设哪家快搜索排名优化公司
  • 适合个人网站游戏推广平台代理
  • 网站呼叫中心 建设工期bt磁力bt天堂
  • 东港网站建设兰州seo优化
  • 织梦网站地图排名函数
  • wordpress会员网站天津百度优化
  • 营销型网站服务公司百度产品大全首页
  • 网站建设助理工资专业软文
  • 网站权重怎么提升sem优化服务公司
  • 中国电子系统建设公司网站百度关键词价格怎么查询
  • 网站图片切换网站建设外包
  • 深圳国贸网站建设深圳网站公司排名
  • 泸州大浪科技做网站seo关键词推广怎么做
  • 做网站怎么认证微博百度信息流投放方式有哪些
  • 政府网站设计方案网站seo优化价格
  • wordpress form manager 中文windows优化大师可靠吗