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

织梦高端html5网站建设工作室网络公司网站模板折页在线设计平台

织梦高端html5网站建设工作室网络公司网站模板,折页在线设计平台,登录wordpress后台的管理,临沂网站建设选盛誉为什么用结构性模式? 结构性模式关注点“怎样组合对象/类?”所以我们关注下类的组合关系类结构型模式关心类的组合,由多个类可以组合成一个更大的(继承)对象结构型模式关心类与对象的组合,通过关联关系在一…

在这里插入图片描述

为什么用结构性模式?

  • 结构性模式关注点“怎样组合对象/类?”所以我们关注下类的组合关系
  • 类结构型模式关心类的组合,由多个类可以组合成一个更大的(继承)
  • 对象结构型模式关心类与对象的组合,通过关联关系在一个类中定义另一个类的实例对象(组合)
  • 根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结构型模式
  1. 适配器模式(Adapter Pattern):两个不兼容接口之间适配的桥梁。
  2. 桥接模式(Bridge Pattern):相同功能抽象化与实现化解耦,抽象与实现可以独立升级。
  3. 过滤器模式(Filter、Criteria Pattern):使用不同的标准来过滤一组对象。
  4. 组合模式(Composite Pattern):相似对象进行组合,形成树形结构。
  5. 装饰器模式(Decorator Pattern):向一个现有的对象添加新的功能,同时又不改变其结构。
  6. 外观模式(Facade Pattern):向现有的系统添加一个接口,客户端访问此接口来隐藏系统的复杂性。
  7. 享元模式(Flyweight Pattern):尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
  8. 代理模式(Proxy Pattren):一个类代表另一个类的功能。

🍭结构性模式之享元模式(Flyweight Pattern)

🍎享元模式

  • 享元模式(Flyweight Pattern),运用共享技术有效地支持大量细粒度对象的服用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。对象结构型。
  • 在享元模式中可以共享的相同内容为内部状态(IntrinsicState),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic State),由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同的对象可以具有一些不同的特征,而相同的内部状态是可以共享的。
  • 在享元模式中通常会出现工厂模式,需要创建一个享元工厂来负责维护一个享元池(Flyweight Pool)用于存储具有相同内部状态的享元对象。

在这里插入图片描述

享元模式包含如下角色:

  • Flyweight:抽象享元类
  • ConcreteFlyweight:具体享元类
  • UnsharedConcreateFlyweight:非共享具体享元类
  • FlyweightFactory:享元工厂类

🍔代码实现

/*** 可共享状态和不可共享状态* * 享元和原型* 1、享元返回的是这个人本身* 2、原型返回的是克隆人*/
public abstract class AbstractWaitressFlyweight {boolean canService = true; // 能否服务// 正在服务。享元的不可共享属性留给外部进行改变的接口。abstract void service();// 服务完成。享元的不可共享属性留给外部进行改变的接口。abstract void end();public boolean isCanService() {return canService;}
}
/*** 具体享元类*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeautifulWaitress extends AbstractWaitressFlyweight {String id; // 工号String name; // 名字int age; // 年龄// 以上是共享的,不变的@Overridevoid service() {System.out.println("工号:" + id + " 名字: " + name + " 年龄:" + age + " 正在为您服务");// 改变外部状态this.canService = false;}@Overridevoid end() {System.out.println("工号:" + id + " 名字: " + name + " 年龄:" + age + " 服务结束");this.canService = true;}
}
/*** 足道店:这相当于享元工厂。店里有很多服务员*/
public class ZuDao {private static Map<String, AbstractWaitressFlyweight> pool = new HashMap<>();public void addWaitress(AbstractWaitressFlyweight waitress) {pool.put(UUID.randomUUID().toString(), waitress);}// 享元,池子中有对象static {BeautifulWaitress waitress1 = new BeautifulWaitress("1111", "张三", 1);BeautifulWaitress waitress3 = new BeautifulWaitress("9527", "张三", 3);pool.put(waitress1.getId(), waitress1);pool.put(waitress3.getId(), waitress3);}public static AbstractWaitressFlyweight getWaitress(String name) {AbstractWaitressFlyweight flyweight = pool.get(name);if (flyweight == null) {for (AbstractWaitressFlyweight waitressFlyweight : pool.values()) {// 当前共享对象能否使用if (waitressFlyweight.isCanService()) {return waitressFlyweight;}}return null;} else {return flyweight;}}
}
public class MainTest {public static void main(String[] args) {// 1.我AbstractWaitressFlyweight waitress1 = ZuDao.getWaitress("");waitress1.service();System.out.println(waitress1);// 2.张三AbstractWaitressFlyweight waitress2 = ZuDao.getWaitress("");waitress2.service();System.out.println(waitress2);waitress2.end();// 3.李四AbstractWaitressFlyweight waitress3 = ZuDao.getWaitress("");waitress3.service();System.out.println(waitress3);}
}
工号:1111 名字: 张三 年龄:1 正在为您服务
BeautifulWaitress(id=1111, name=张三, age=1)
工号:9527 名字: 张三 年龄:3 正在为您服务
BeautifulWaitress(id=9527, name=张三, age=3)
工号:9527 名字: 张三 年龄:3 服务结束
工号:9527 名字: 张三 年龄:3 正在为您服务
BeautifulWaitress(id=9527, name=张三, age=3)

🍕应用场景

  • 典型的代表:数据库连接池
  • 所有的池化技术
  • 享元和原型模式有什么区别?享元是预先准备好的对象进行复用,原型没法确定预先有哪些。

文章转载自:

http://jMu3zKVU.zwckz.cn
http://4qLlTE73.zwckz.cn
http://KpHOuAlS.zwckz.cn
http://UUNOTq2e.zwckz.cn
http://CccMxBR3.zwckz.cn
http://In4PcU9d.zwckz.cn
http://ETwQE85T.zwckz.cn
http://rZXKMeWs.zwckz.cn
http://YeZlU3YJ.zwckz.cn
http://E1KstUxj.zwckz.cn
http://iKCr96wy.zwckz.cn
http://rBFLODPD.zwckz.cn
http://Vkk9fjZI.zwckz.cn
http://g3YhoEYe.zwckz.cn
http://mdQqohZH.zwckz.cn
http://h6tL3DTQ.zwckz.cn
http://m73Z6mE8.zwckz.cn
http://yhlVwizi.zwckz.cn
http://HiPYzvh5.zwckz.cn
http://72rBoevD.zwckz.cn
http://shjZQsWD.zwckz.cn
http://sykkLhsm.zwckz.cn
http://PF3lC2ZP.zwckz.cn
http://6sOT44aL.zwckz.cn
http://2GvwTxez.zwckz.cn
http://AUhwVebV.zwckz.cn
http://GkF48ZmJ.zwckz.cn
http://VkDIVvEY.zwckz.cn
http://iba6orDk.zwckz.cn
http://EruoRoSU.zwckz.cn
http://www.dtcms.com/wzjs/776648.html

相关文章:

  • 网站建设立项报告制作网页心得体会
  • 永久免费自助建网站莱芜杂谈莱芜在线论坛
  • 不用下载的行情网站wordpress免费虚拟主机
  • 网站页面维护上海影视公司
  • 各大网站logo图标网站的v2信誉认证怎么做
  • 信息空间网站好优化外贸网站
  • 网站进入考核期要多久网站空间配置
  • 企业品牌推广网站安卓应用市场官方版下载
  • 宝安网站制作培训wordpress登陆接口
  • 手机如何翻到国外网站wordpress不买域名可以吗
  • 在门户网站做产品单页多少钱一天花都网站设计都
  • 网站设计的英文网站开发容易学吗
  • 怎么做 在线电影网站梧州住房和建设局网站
  • 珠海网站建设公做百度网站优化多少钱
  • 昌平建设网站怎么判断是不是外包公司
  • 宁夏公路建设局网站wordpress数据库命名
  • 专门做旅游攻略的网站公司logo注册
  • 关于做网站的合同如何设计好网站
  • 设计公司网站多少钱网站项目建设目标
  • 让路由器做网站服务器做网站哪个公司
  • 网站运营学习品牌营销与市场营销的区别
  • 在网上做黑彩网站会怎样网站做跳转会有什么影响
  • 网站建设业大连建站方案
  • 网站建设公司应该怎么转型免费网站推广
  • 罗庄区建设局网站互联网平台推广方案
  • 电信100m光纤做网站外贸公司大全
  • 现在建设一个网站需要什么技术苏州现在可以正常进入吗
  • 深圳建网站开发费用上海大公司
  • 建设运营网站用html制作个人简历
  • 响应式网站开发教程步骤流程