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

网站机房建设方案百度指数搜索

网站机房建设方案,百度指数搜索,龙华哪有做网站设计,百度的广告享元模式属于结构型模式。享元模式是池技术的重要实现方式,它可以减少重复对象的创建,使用缓存来共享对象,从而降低内存的使用。细粒度的对象其状态可以分为两种:内部状态和外部状态。应用场景系统存在大量相似或相同的对象。外部…
  • 享元模式属于结构型模式。

  • 享元模式是池技术的重要实现方式,它可以减少重复对象的创建,使用缓存来共享对象,从而降低内存的使用。

  • 细粒度的对象其状态可以分为两种:内部状态和外部状态。

应用场景
  • 系统存在大量相似或相同的对象。

  • 外部状态相同类似情况下。

  • 需要缓冲池时。

下面将由一个例子讲解享元模式的创建和使用:

假设我们有一个系统需要实现图形的绘制,通过形状划分,所有图形都可以实现绘制颜色的功能。这里形状是图形的内部状态,颜色是图形的外部状态,内部状态是不受外界条件影响而改变。

如果我要绘制白色的圆形,黑色的方形,红色的圆形,这个时候就可以使用享元模式,圆形共享一个对象,方形共享一个对象。

角色说明:
  • Flyweight --> IShape(抽象享元角色):接口或抽象类,可以同时定义出对象的外部状态和内部状态的接口或实现。

  • ConcreteFlyweight --> Circle,Rectangle(具体享元角色):实现抽象享元角色中定义的业务。

  • FlyweightFactory --> ShapeFactory(享元工厂):管理对象池和创建享元对象。

定义图形接口:

public interface IShape {void draw(String color);
}

圆形实现接口,实现圆形的绘制方法:

public class Circle implements IShape {String mShapeName = "圆形";@Overridepublic void draw(String color) {System.out.println("绘制" + mShapeName + ": " + color);}
}

方形实现接口,实现方形的绘制方法:

public class Rectangle implements IShape {String mShapeName = "方形";@Overridepublic void draw(String color) {System.out.println("绘制" + mShapeName + ": " + color);}
}

定义一个工厂类,创建缓存池和对应图形对象:

public class ShapeFactory {private Map<String, IShape> mShapeMap = new HashMap<>();public IShape getShape(Class<?> clazz) {IShape iShape = mShapeMap.get(clazz.getCanonicalName());if (iShape == null) {if (clazz == Circle.class) {System.out.println("创建Circle...");iShape = new Circle();} else if (clazz == Rectangle.class) {System.out.println("创建Rectangle...");iShape = new Rectangle();}mShapeMap.put(clazz.getCanonicalName(), iShape);}return iShape;}
}

具体调用:

public class TestMain {public static void main(String[] args) {ShapeFactory factory = new ShapeFactory();IShape circle = factory.getShape(Circle.class);circle.draw("white");IShape rectangle = factory.getShape(Rectangle.class);rectangle.draw("black");IShape circle2 = factory.getShape(Circle.class);circle2.draw("red");System.out.println("circle:" + circle.hashCode() + " rectangle:" + rectangle.hashCode() + " circle2:" + circle2.hashCode());}
}

可以看到circle和circle2的hashCode一致,说明他们指向了同一块内存空间,而rectangle是单独的hashCode。

其实还有一个例子也可以设计成享元模式:黑白棋。这个大家可以自己理解下~

优点:
  • 有共用数据不想多次创建时,可以实现对象共享,减少内存开销。

缺点:
  • 设计复杂,要区分内部状态和外部状态

Android中的享元模式:
  • String类:

String s1 = "abc";
String s2 = "abc";print(s1 == s2)  //这里s1和s2指向同一个引用,打印true
思考:

其实写到这里我有了一个疑问,享元模式是不是就是单例模式+工厂模式?

欢迎大家赐教~

http://www.dinnco.com/news/61136.html

相关文章:

  • 无锡网站建设运营怎么注册自己公司的网址
  • 如何做京东商城一样的网站湖南网站设计外包服务
  • 查网站有没有做推广中小企业管理培训课程
  • 杭州网站建站公司产品推广方案范文500字
  • 没有服务器怎样做网站太原seo快速排名
  • 答题助手网站怎么做的博客推广工具
  • 制作app网站seo网站监测
  • dw做旅游网站教程搜索引擎的优化和推广
  • 广州高档网站建设百度app客服人工在线咨询
  • 网站建设的原则2023新冠结束了吗
  • 全市政府网站建设管理情况关键词排名怎么做好
  • 专做皮具的网站市场调研报告模板ppt
  • qq表白链接seo哪家好
  • 网站如何做备份百度指数有三个功能模块
  • 正规免费发布信息网站电商网站链接买卖
  • 政府网站建设条例产品软文撰写
  • 泰州企业网站模板建站上海牛巨仁seo
  • 手表网欧米茄奉节县关键词seo排名优化
  • 专业做能源招聘的网站seo中文含义是什么
  • 网站怎么做免费搜索引擎实训心得体会
  • 泰州专一做淘宝网站专门做推广的软文
  • 手机端网站开发视频教程如何制作微信小程序
  • 阿里云是做网站的吗建网站需要哪些步骤
  • 做视频写真网站犯法吗搜索引擎优化方案案例
  • 完善幼儿园网站建设代运营公司排名
  • 动漫设计培训机构排名在线网站seo诊断
  • 服务器可以做网站吗市场推广渠道有哪些
  • 个人网站建设软件成都网络推广外包公司哪家好
  • 网站开发和系统开发区别app推广引流
  • 做网站竞价是什么意思seo点击工具帮你火21星热情