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

深圳h5网站建设餐饮营销策划方案

深圳h5网站建设,餐饮营销策划方案,盐城快速建设网站找哪家,网站开发怎么入驻京东享元模式属于结构型模式。享元模式是池技术的重要实现方式,它可以减少重复对象的创建,使用缓存来共享对象,从而降低内存的使用。细粒度的对象其状态可以分为两种:内部状态和外部状态。应用场景系统存在大量相似或相同的对象。外部…
  • 享元模式属于结构型模式。

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

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

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

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

  • 需要缓冲池时。

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

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

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

角色说明:
  • 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.zhongyajixie.com/news/26827.html

相关文章:

  • php做网站的好处百度网站首页提交入口
  • 淘宝网站建设模板免费下载郑州seo价格
  • 做电音的软件的专业下载网站杭州seo薪资水平
  • 电脑打不开网页怎么回事seo网站关键词优化怎么做
  • 电影制作专业厦门站长优化工具
  • 东莞网站优化一般多少钱学开网店哪个培训机构好正规
  • 做网站需要用什么系统seo是什么软件
  • 网站要怎么做关键词强强seo博客
  • 企业文化理念口号windows优化大师可靠吗
  • 重庆就业网seo搜索引擎优化实训
  • 高中信息技术网站设计规划软文营销代理
  • 龙岗坪地网站建设公司大概需要多少钱
  • 现在手机网站用什么做信息流优化
  • 赤壁市住房建设委员会网站淘宝关键词优化软件
  • 做网站需要准备的素材提高工作效率总结心得
  • 临沂网站建设有哪些搜狗站长平台验证网站
  • 网站页面设计的网址南昌网站开发公司
  • 城口自助建站学生个人网页优秀模板
  • 博客网站怎么做cpa全自动推广软件
  • 网站后台上次图片市场seo是什么意思
  • 艺术风格网站百度推广登录平台怎么收费
  • 徐州网站建设系统服务之家网站推广公司
  • 伊利网站建设评价抖音seo软件
  • 重庆网站建设制作费用百度网盘app下载安装电脑版
  • wordpress 原图查看企业seo排名
  • 源码网站制作教程aso推广公司
  • 萍乡做网站哪家好怎么做好网络推广销售
  • 做网站必须会php吗济南做网站建设的公司
  • wordpress防止网站标题算关键词优化吗
  • 本溪建设银行网站培训网站模板