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

中国还有哪些做外贸的网站seo职业规划

中国还有哪些做外贸的网站,seo职业规划,制作网站详细步骤,医院电子网站建设享元模式(Flyweight Pattern) 定义 享元模式通过共享技术来支持大量细粒度的对象,以减少内存中的对象数量。其核心思想是将对象的状态分为内部状态和外部状态,内部状态是不变的,可以被多个对象共享;外部状…

享元模式(Flyweight Pattern)

定义

享元模式通过共享技术来支持大量细粒度的对象,以减少内存中的对象数量。其核心思想是将对象的状态分为内部状态和外部状态,内部状态是不变的,可以被多个对象共享;外部状态是随环境改变而改变的,不能共享,必须由客户端保持。

属于结构型模式。

适用场景

  • 系统有大量相似对象:这些对象除了几个参数外基本相同,可以通过共享来减少内存消耗。
  • 需要缓冲池的场景:如数据库连接池、线程池等,通过共享对象池中的对象来提高资源利用率。
  • 对象创建成本较高:创建对象的成本较高时,使用享元模式可以减少对象的创建数量,降低成本。

标准示例

在这里插入图片描述

Flyweight 抽象的享元角色
这是所有具体享元类的超类,为这些类规定出需要实现的公共接口。通常包含一些与内部状态相关的操作,这些内部状态是可以在多个享元对象之间共享的。

/*** 抽象享元角色*/
public interface IFlyweight {/*** 业务方法* @param extrinsicState 外在状态*/void operation(String extrinsicState);
}

ConcreteFlyweight 具体的享元角色
实现抽象享元角色所规定的接口。如果有内部状态的话,必须负责为内部状态提供存储空间。享元对象的内部状态必须与对象所处的周围环境无关,从而使得享元对象可以在系统内共享的。

/*** 具体享元角色*/
public class ConcreteFlyweight implements IFlyweight{//内在状态,内在状态不会改变private String intrinsicState;public ConcreteFlyweight(String intrinsicState){this.intrinsicState = intrinsicState;}/*** 业务方法* @param extrinsicState 外在状态*/public void operation(String extrinsicState) {System.out.println("Object address:" + System.identityHashCode(this));System.out.println("IntrinsicState:" + this.intrinsicState);System.out.println("ExtrinsicState:" + extrinsicState);}
}

FlyweightFactory 享元工厂角色
负责创建和管理享元角色。当客户端请求一个享元对象时,享元工厂会检查系统中是否已经存在适当的享元对象,如果存在则直接返回该对象,否则创建一个新的享元对象。
通常通过哈希表(如HashMap)来存储和管理享元对象,以提高对象的检索和创建效率。

/*** 享元工厂*/
public class FlyweightFactory {private static Map<String,IFlyweight> pool = new HashMap<String, IFlyweight>();//内部状态作为缓存的keypublic static IFlyweight getFlyweight(String intrinsicState){if (!pool.containsKey(intrinsicState)){IFlyweight flyweight = new ConcreteFlyweight(intrinsicState);pool.put(intrinsicState,flyweight);}return pool.get(intrinsicState);}
}

ClientTest 调用类:

public class ClientTest {public static void main(String[] args) {IFlyweight flyweight = FlyweightFactory.getFlyweight("黑桃A");flyweight.operation("地主出的");IFlyweight flyweight1 = FlyweightFactory.getFlyweight("黑桃A");flyweight1.operation("地主出过的");}
}

执行结果输出为:

Object address:1360875712
IntrinsicState:黑桃A
ExtrinsicState:地主出的
Object address:1360875712
IntrinsicState:黑桃A
ExtrinsicState:地主出过的
内部状态与外部状态:

享元模式的关键在于区分内部状态和外部状态。
内部状态是可以在多个对象中共享的,而外部状态是随环境改变而改变的,不能共享。


举一个下五子棋的例子。
棋子的颜色为内部状态:黑和白;
下棋坐标位置为外部状态:Point(x,y)
假设一局五子棋,黑白双方各落子30枚,如果不用享元,就要new 60个对象。
如果采用享元,只需要2个对象即可。
请看如下设计:
ChessPiece 棋子,作为抽象享元角色,包含了一个落子的方法 placingPiece(Point p)

/*** 抽象棋子*/
public interface ChessPiece {/*** 落子* @param point 落子坐标*/void placingPiece(Point point);
}

WhitePiece 白色棋子,是具体享元角色。

/*** 白色棋子*/
public class WhitePiece implements ChessPiece{private String color = "white";public void placingPiece(Point point) {System.out.println( color +" piece named "+System.identityHashCode(this) + ", placing on "+point.toString());}
}

BlackPiece 黑色棋子,是具体享元角色。

/*** 黑色棋子*/
public class BlackPiece implements ChessPiece{private String color = "black";public void placingPiece(Point point) {System.out.println( color +"piece named "+System.identityHashCode(this) + ", placing on "+point.toString());}
}

Point 是非享元角色,即外部状态。

/*** 棋盘坐标点*/
@Data
public class Point {private String x;private String y;public Point(String x,String y){this.x = x;this.y = y;}@Overridepublic String toString() {return "" +"x='" + x + '\'' +", y='" + y + '\'';}
}

GobangFactory 五子棋工厂,用来提供棋子。

/*** 五子棋工厂类*/
public class GobangFactory {private static Map<String,ChessPiece> pieces = new HashMap<String, ChessPiece>(2);public static ChessPiece getPiece(String color){if(!StringUtils.equalsAny(color,"black","white")){throw new UnsupportedOperationException("拿错棋子了!");}//如果map中还没有棋子,那么添加进去。if(!pieces.containsKey(color)){//如果是白色,就把白子加进mapif("white".equals(color)){ChessPiece piece =new WhitePiece();pieces.put("white",piece);}//如果是黑色,就把黑子加进mapif("black".equals(color)){ChessPiece piece =new BlackPiece();pieces.put("black",piece);}}//取子返回return pieces.get(color);}}

ClientPlay 调用类:

public class ClientPlay {public static void main(String[] args) {ChessPiece piece1 = GobangFactory.getPiece("white");piece1.placingPiece(new Point("10","20"));ChessPiece piece2 = GobangFactory.getPiece("black");piece2.placingPiece(new Point("10","30"));ChessPiece piece3 = GobangFactory.getPiece("white");piece3.placingPiece(new Point("20","40"));ChessPiece piece4 = GobangFactory.getPiece("black");piece4.placingPiece(new Point("20","50"));}
}

执行结果输出为:

white piece named 1725154839, placing on x='10', y='20'
blackpiece named 1670675563, placing on x='10', y='30'
white piece named 1725154839, placing on x='20', y='40'
blackpiece named 1670675563, placing on x='20', y='50'


以上为享元模式全部内容,感谢阅读。

http://www.hkea.cn/news/756844/

相关文章:

  • 自己做装修网站南宁百度推广seo
  • 品牌建设浅谈seo网络营销外包
  • 昆山网站建设兼职千锋教育的官网
  • cm域名做网站盘古百晋广告营销是干嘛
  • 网站栏目策划企业网络营销方案
  • 网站自动采集指标sem广告投放是做什么的
  • 想做一个个人网站怎么做培训学校
  • 网站开发ipv6升级如何创建自己的小程序
  • 做网站需要备案吗外贸网站推广与优化
  • 独立网站建设流程b站视频推广网站动漫
  • 泰安诚信的网站建设b站推广入口2023年
  • 高校网站建设资料库东莞seo推广公司
  • 电子印章手机在线制作软件四川seo整站优化费用
  • 个人风采网站制作外贸网站平台哪个好
  • 沈阳企业建站谷歌推广和seo
  • .la域名做的网站如何快速推广app
  • 广州优化网站建设怎么用手机制作网站
  • 做微网站的第三方学网络营销
  • 湖南做网站的公司有哪些搜索引擎是什么
  • flash网站管理系统seo优化排名易下拉用法
  • 永年网站建设友链互换平台推荐
  • 企业网站的设计公司网络广告营销的典型案例
  • 高校思政主题网站建设的意义关键词歌词任然
  • 哪里做网站比较快2345网址导航下载桌面
  • 广州建设委员会官方网站凡科建站下载
  • 全球做网站的公司排名百度一下你就知道官网
  • 小企业网站价格免费发链接的网站
  • 买了空间和域名 怎么做网站哪家公司网站做得好
  • 网站备案是否关闭衡阳网站建设公司
  • 遂昌建设局网站个人怎么做网站