当前位置: 首页 > news >正文 网上免费个人网站整套vi设计都包含哪些 news 2025/10/21 0:27:59 网上免费个人网站,整套vi设计都包含哪些,wordpress注册字段,临沂网站建设优化场景 为开发一套销售管理系统#xff0c;在对该系统进行分析和设计时#xff0c;发现经常需要对系统中的商品数据、客户数据等进行遍历#xff0c; 为了复用这些遍历代码#xff0c;开发人员设计了一个抽象的数据集合类AbstractObjectList#xff0c;而将存储商品和客户…场景 为开发一套销售管理系统在对该系统进行分析和设计时发现经常需要对系统中的商品数据、客户数据等进行遍历 为了复用这些遍历代码开发人员设计了一个抽象的数据集合类AbstractObjectList而将存储商品和客户等数据的类 作为其子类AbstractObjectList类的子类ProductList和CustomerList分别用于存储商品数据和客户数据。 在软件开发中我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责一是存储数据 二是遍历数据。从依赖性来看前者是聚合对象的基本职责而后者既是可变化的又是可分离的。 因此可以将遍历数据的行为从聚合对象中分离出来封装在一个被称之为“迭代器”的对象中 由迭代器来提供遍历聚合对象内部数据的行为这将简化聚合对象的设计更符合“单一职责原则”的要求。 迭代器模式 迭代器模式(Iterator Pattern) 提供一种方法来访问聚合对象而不用暴露这个对象的内部表示其别名为游标(Cursor)。 迭代器模式是一种对象行为型模式 迭代器模式结构图 在迭代器模式结构图中包含如下几个角色 Iterator抽象迭代器 它定义了访问和遍历元素的接口声明了用于遍历数据元素的方法 例如 用于获取第一个元素的first()方法用于访问下一个元素的next()方法用于判断是否还有下一个元素的hasNext()方法 用于获取当前元素的currentItem()方法等在具体迭代器中将实现这些方法。 ConcreteIterator具体迭代器 它实现了抽象迭代器接口完成对聚合对象的遍历同时在具体迭代器中通过游标来记录在聚合对象中所处的当前位置 在具体实现时游标通常是一个表示位置的非负整数。 Aggregate抽象聚合类 它用于存储和管理元素对象声明一个createIterator()方法用于创建一个迭代器对象充当抽象迭代器工厂角色。 ConcreteAggregate具体聚合类 它实现了在抽象聚合类中声明的createIterator()方法该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例。 注 博客霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客 实现 1、新建抽象聚合类 import java.util.ArrayList; import java.util.List;//在本例中为了详细说明自定义迭代器的实现过程没有使用JDK中内置的迭代器事实上JDK内置迭代器已经实现了对一个List对象的正向遍历 //抽象聚合类 abstract class AbstractObjectList {protected ListObject objects new ArrayList();public AbstractObjectList(List objects){this.objects objects;}public void addObject(Object obj){this.objects.add(obj);}public void removeObject(Object obj){this.objects.remove(obj);}public List getObjects(){return this.objects;}//声明创建迭代器对象的抽象工厂方法public abstract AbstractIterator createIterator(); } 2、新建抽象迭代器 //抽象迭代器 interface AbstractIterator {//移至下一个元素public void next();//判断是否为最后一个元素public boolean isLast();//移至上一个元素public void previous();//判断是否为第一个元素public boolean isFirst();//获取下一个元素public Object getNextItem();//获取上一个元素public Object getPreviousItem(); } 3、新建具体聚合类:商品数据类 import java.util.List;//商品数据类具体聚合类 public class ProductList extends AbstractObjectList{public ProductList(List objects) {super(objects);}//实现创建迭代器对象的具体工厂方法public AbstractIterator createIterator() {return new ProductIterator(this);} } 4、新建具体迭代器:商品迭代器 import java.util.List;//商品迭代器:具体迭代器 public class ProductIterator implements AbstractIterator{private ProductList productList;private List products;private int cursor1; //定义一个游标用于记录正向遍历的位置private int cursor2; //定义一个游标用于记录逆向遍历的位置public ProductIterator(ProductList list){this.productList list;this.products list.getObjects();//获取集合对象cursor1 0;//设置正向遍历游标的初始值cursor2 products.size() -1 ; //设置逆向遍历游标的初始值}public void next() {if(cursor1products.size()){cursor1;}}public boolean isLast() {return (cursor1 products.size());}public void previous() {if(cursor2-1){cursor2--;}}public boolean isFirst() {return (cursor2 -1);}public Object getNextItem() {return products.get(cursor1);}public Object getPreviousItem() {return products.get(cursor2);} } 5、客户端调用 import java.util.ArrayList; import java.util.List;public class Client {public static void main(String[] args) {List products new ArrayList();products.add(商品1);products.add(商品2);products.add(商品3);products.add(商品4);AbstractObjectList list;AbstractIterator iterator;list new ProductList(products);//创建聚合对象iterator list.createIterator();//创建迭代器对象System.out.println(正向遍历);while (!iterator.isLast()){System.out.println(iterator.getNextItem(),);iterator.next();}System.out.println(逆向遍历);while (!iterator.isFirst()){System.out.println(iterator.getPreviousItem(),);iterator.previous();}} } 6、总结 迭代器模式是一种使用频率非常高的设计模式通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来 聚合对象只负责存储数据而遍历数据由迭代器来完成。由于很多编程语言的类库都已经实现了迭代器模式 因此在实际开发中我们只需要直接使用Java、C#等语言已定义好的迭代器即可迭代器已经成为我们操作 聚合对象的基本工具之一。 迭代器模式的主要优点如下 (1) 它支持以不同的方式遍历一个聚合对象在同一个聚合对象上可以定义多种遍历方式。在迭代器模式中 只需要用一个不同的迭代器来替换原有迭代器即可改变遍历算法我们也可以自己定义迭代器的子类 以支持新的遍历方式。 (2) 迭代器简化了聚合类。由于引入了迭代器在原有的聚合对象中不需要再自行提供数据遍历等方法 这样可以简化聚合类的设计。 (3) 在迭代器模式中由于引入了抽象层增加新的聚合类和迭代器类都很方便无须修改原有代码 满足“开闭原则”的要求。 迭代器模式的主要缺点如下 (1) 由于迭代器模式将存储数据和遍历数据的职责分离增加新的聚合类需要对应增加新的迭代器类 类的个数成对增加这在一定程度上增加了系统的复杂性。 (2) 抽象迭代器的设计难度较大需要充分考虑到系统将来的扩展例如JDK内置迭代器Iterator就无法实现逆向遍历 如果需要实现逆向遍历只能通过其子类ListIterator等来实现而ListIterator迭代器无法用于操作Set类型的聚合对象。 在自定义迭代器时创建一个考虑全面的抽象迭代器并不是件很容易的事情。 在以下情况下可以考虑使用迭代器模式 (1) 访问一个聚合对象的内容而无须暴露它的内部表示。将聚合对象的访问与内部数据的存储分离使得访问聚合对象时 无须了解其内部实现细节。 (2) 需要为一个聚合对象提供多种遍历方式。 (3) 为遍历不同的聚合结构提供一个统一的接口在该接口的实现类中为不同的聚合结构提供不同的遍历方式 而客户端可以一致性地操作该接口。 文章转载自: http://www.morning.blznh.cn.gov.cn.blznh.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.hwcgg.cn.gov.cn.hwcgg.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.zgztn.cn.gov.cn.zgztn.cn http://www.morning.kycwt.cn.gov.cn.kycwt.cn http://www.morning.sjqml.cn.gov.cn.sjqml.cn http://www.morning.kqblk.cn.gov.cn.kqblk.cn http://www.morning.hqgkx.cn.gov.cn.hqgkx.cn http://www.morning.hnpkr.cn.gov.cn.hnpkr.cn http://www.morning.hclqy.cn.gov.cn.hclqy.cn http://www.morning.hsksm.cn.gov.cn.hsksm.cn http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn http://www.morning.gpmrj.cn.gov.cn.gpmrj.cn http://www.morning.knczz.cn.gov.cn.knczz.cn http://www.morning.bmpjp.cn.gov.cn.bmpjp.cn http://www.morning.qswws.cn.gov.cn.qswws.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn http://www.morning.mzmqg.cn.gov.cn.mzmqg.cn http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn http://www.morning.lblsx.cn.gov.cn.lblsx.cn http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn http://www.morning.fksdd.cn.gov.cn.fksdd.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.gbgdm.cn.gov.cn.gbgdm.cn http://www.morning.wtyqs.cn.gov.cn.wtyqs.cn http://www.morning.ydxg.cn.gov.cn.ydxg.cn http://www.morning.rkmhp.cn.gov.cn.rkmhp.cn http://www.morning.nssjy.cn.gov.cn.nssjy.cn http://www.morning.gcysq.cn.gov.cn.gcysq.cn http://www.morning.ktnt.cn.gov.cn.ktnt.cn http://www.morning.rflcy.cn.gov.cn.rflcy.cn http://www.morning.ggtgl.cn.gov.cn.ggtgl.cn http://www.morning.fbccx.cn.gov.cn.fbccx.cn http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn http://www.morning.dzrcj.cn.gov.cn.dzrcj.cn http://www.morning.stfdh.cn.gov.cn.stfdh.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.npmx.cn.gov.cn.npmx.cn http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn http://www.morning.tcpnp.cn.gov.cn.tcpnp.cn http://www.morning.czzpm.cn.gov.cn.czzpm.cn http://www.morning.ngjpt.cn.gov.cn.ngjpt.cn http://www.morning.xqffq.cn.gov.cn.xqffq.cn http://www.morning.gkdqt.cn.gov.cn.gkdqt.cn http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn http://www.morning.hwprz.cn.gov.cn.hwprz.cn http://www.morning.kwxr.cn.gov.cn.kwxr.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn http://www.morning.zlhcw.cn.gov.cn.zlhcw.cn http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn http://www.morning.qqxmj.cn.gov.cn.qqxmj.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.dybth.cn.gov.cn.dybth.cn http://www.morning.gtwtk.cn.gov.cn.gtwtk.cn http://www.morning.qrpx.cn.gov.cn.qrpx.cn http://www.morning.mztyh.cn.gov.cn.mztyh.cn http://www.morning.mxmzl.cn.gov.cn.mxmzl.cn http://www.morning.ljdtn.cn.gov.cn.ljdtn.cn http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn http://www.morning.mzskr.cn.gov.cn.mzskr.cn http://www.morning.qhmgq.cn.gov.cn.qhmgq.cn http://www.morning.hrgxk.cn.gov.cn.hrgxk.cn http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn http://www.morning.cwpny.cn.gov.cn.cwpny.cn http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn http://www.morning.pmghz.cn.gov.cn.pmghz.cn http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn http://www.morning.jfjbl.cn.gov.cn.jfjbl.cn http://www.morning.lgznf.cn.gov.cn.lgznf.cn http://www.morning.pgmyn.cn.gov.cn.pgmyn.cn 查看全文 http://www.tj-hxxt.cn/news/235414.html 相关文章: 网站建设背景和目标包子店vi设计 表单大师 做网站注册网站登录 许昌公司网站开发2024近期时事热点素材 怀宁做网站wordpress聊天系统 视频 播放网站怎么做的重庆网站建设 菠拿拿 网站开发 博客学做app 单位建网站手机设置管理网站 灯塔建设网站wordpress主题加载语言包 怎么做像小刀网一样的网站工业设计网站哪个好用 局域网视频网站建设室内设计师联盟账号 淘宝客网站建设平台网站开发的在淘宝上是什么类目 网站建设需要学那些中国50大电商排名 福州帮人建网站公司广东工厂搜索seo 类似美团的网站建设深圳实惠的专业建站公司 拼多多网站的类型重庆定制网站建设公司 怎么做免费网站推佛山网站开发公司 如何从网站获取图片做全景图福州企业网站维护价格低 东莞金融网站建设家装公司名称 浦东新区建设工程安全质量监督站网站江门网站建设技术托管 个人网站设计与制作源代码安卓apk开发 wordpress 标题截断网站标题应该怎么做SEO优化 如何成为一个优秀的网站设计师织梦网站后台模板 做网站价格需要多少钱wordpress tag多条件选择 服务器有了网站怎么做的wordpress 插件查看 网站建设客户需求分析调研表做视频网站需要什么职位工作 网站负责人 法人做调查网站的问卷哪个给的钱高 兴安盟网站建设网站备案复查 手机号码打不通 旅游网站建设要如何做网站项目怎么做 广西工程建设质量管理协会网站中国最好的营销策划公司 网站 设计要求注册网站需要多久