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

个人网站的制作方法企业培训师资格证报考2022

个人网站的制作方法,企业培训师资格证报考2022,做网站视频博彩,微商分销系统怎么做文章目录 组合模式介绍实现javarsut 组合模式 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计…

文章目录

    • 组合模式
      • 介绍
      • 实现
      • java
      • rsut

组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

介绍

  • 意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

  • 主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

  • 何时使用:、
    1、您想表示对象的部分-整体层次结构(树形结构)。 2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

如何解决:树枝和叶子实现统一接口,树枝内部组合该接口。

应用实例

  1. 算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作数也可以是操作数、操作符和另一个操作数。

优点: 1、高层模块调用简单。 2、节点自由增加。

缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。

实现

我们有一个类 Employee,该类被当作组合模型类。CompositePatternDemo 类使用 Employee 类来添加部门层次结构,并打印所有员工,这样我们就可以实现不同的的部门进行自由组合,实现不同部门之间的即插即用。

组合模式的 UML 图

java

步骤 1
创建 Employee 类,该类带有 Employee 对象的列表。
在这里插入图片描述

Employee.java

import java.util.ArrayList;
import java.util.List;public class Employee {private String name;private String dept;private int salary;private List<Employee> subordinates;//构造函数public Employee(String name,String dept, int sal) {this.name = name;this.dept = dept;this.salary = sal;subordinates = new ArrayList<Employee>();}public void add(Employee e) {subordinates.add(e);}public void remove(Employee e) {subordinates.remove(e);}public List<Employee> getSubordinates(){return subordinates;}public String toString(){return ("Employee :[ Name : "+ name +", dept : "+ dept + ", salary :"+ salary+" ]");}   
}

步骤 2
使用 Employee 类来创建和打印员工的层次结构。

CompositePatternDemo.java

public class CompositePatternDemo {public static void main(String[] args) {Employee CEO = new Employee("John","CEO", 30000);Employee headSales = new Employee("Robert","Head Sales", 20000);Employee headMarketing = new Employee("Michel","Head Marketing", 20000);Employee clerk1 = new Employee("Laura","Marketing", 10000);Employee clerk2 = new Employee("Bob","Marketing", 10000);Employee salesExecutive1 = new Employee("Richard","Sales", 10000);Employee salesExecutive2 = new Employee("Rob","Sales", 10000);CEO.add(headSales);CEO.add(headMarketing);headSales.add(salesExecutive1);headSales.add(salesExecutive2);headMarketing.add(clerk1);headMarketing.add(clerk2);//打印该组织的所有员工System.out.println(CEO); for (Employee headEmployee : CEO.getSubordinates()) {System.out.println(headEmployee);for (Employee employee : headEmployee.getSubordinates()) {System.out.println(employee);}}        }
}

步骤 3
执行程序,输出结果为:

Employee :[ Name : John, dept : CEO, salary :30000 ]
Employee :[ Name : Robert, dept : Head Sales, salary :20000 ]
Employee :[ Name : Richard, dept : Sales, salary :10000 ]
Employee :[ Name : Rob, dept : Sales, salary :10000 ]
Employee :[ Name : Michel, dept : Head Marketing, salary :20000 ]
Employee :[ Name : Laura, dept : Marketing, salary :10000 ]
Employee :[ Name : Bob, dept : Marketing, salary :10000 ]

rsut

在rust中由于所有权机制,组合模式中如果不使用引用的方法在组合顺序上便有所限制,只能从低级的开始组合,否则进行组合时便会出现所有权报错问题,由于本人代码水平有限没能实现用引用实现的组合模式,只能用转移所有权的方法实现。

use std::fmt;// 定义雇员
struct  Employee{name:String,dept:String,sal:i32,subordinates:Vec<Employee>
}
// 自定义格式化
impl fmt::Display for Employee {fn fmt(&self, f: &mut fmt::Formatter) -> std::fmt::Result {write!(f,"Employee : Name{}, dept : {} ,salary : {}", self.name,self.dept,self.sal)}
}
impl Employee {fn add(&mut self,e:Employee) {self.subordinates.push(e);}fn remove(&mut self,e:Employee) {self.subordinates.retain(|x| {if x.name!=e.name||x.dept==e.dept||x.sal==e.sal{return true;}return false;});}fn get_subordinates(&self) {self.subordinates.as_ptr();}fn new(name:String,dept:String, sal:i32)->Employee{Employee { name, dept,sal,subordinates:Vec::new() }}}
fn pe(e:&Employee) {println!("{}",e);if !e.subordinates.is_empty(){e.subordinates.iter().for_each(|x| pe(x));}}
fn main(){let mut ceo=Employee::new(String::from("John"), String::from("CEO"),30000);let mut head_sales=Employee::new(String::from("Robert"), String::from("Head Sales"),20000);let mut head_market=Employee::new(String::from("Michel"), String::from("Head Marketing"),10000);let mut clerk1=Employee::new(String::from("Laura"), String::from("Marketing"),10000);head_sales.add(head_market);head_sales.add(clerk1);ceo.add(head_sales);pe(&ceo)}

文章转载自:
http://eminence.rtkz.cn
http://airdrome.rtkz.cn
http://chrematistics.rtkz.cn
http://beard.rtkz.cn
http://protein.rtkz.cn
http://battlemented.rtkz.cn
http://bubbleheaded.rtkz.cn
http://rancidity.rtkz.cn
http://withdraw.rtkz.cn
http://hootchykootchy.rtkz.cn
http://diathermize.rtkz.cn
http://funiculus.rtkz.cn
http://canonicate.rtkz.cn
http://velleity.rtkz.cn
http://influence.rtkz.cn
http://chromeplate.rtkz.cn
http://atli.rtkz.cn
http://excursively.rtkz.cn
http://aperitive.rtkz.cn
http://doloroso.rtkz.cn
http://cyclorama.rtkz.cn
http://yokefellow.rtkz.cn
http://gully.rtkz.cn
http://compasses.rtkz.cn
http://mincemeat.rtkz.cn
http://cutely.rtkz.cn
http://afforest.rtkz.cn
http://annals.rtkz.cn
http://dactinomycin.rtkz.cn
http://cycloolefin.rtkz.cn
http://scandalmonger.rtkz.cn
http://guyenne.rtkz.cn
http://nitrogenous.rtkz.cn
http://sulfhydrate.rtkz.cn
http://soaprock.rtkz.cn
http://lambda.rtkz.cn
http://clone.rtkz.cn
http://scriptgirl.rtkz.cn
http://subtilin.rtkz.cn
http://inlet.rtkz.cn
http://retraining.rtkz.cn
http://sidereal.rtkz.cn
http://bolter.rtkz.cn
http://megacephalic.rtkz.cn
http://stiffly.rtkz.cn
http://pyrophyllite.rtkz.cn
http://volatilizable.rtkz.cn
http://overvalue.rtkz.cn
http://adjutant.rtkz.cn
http://toplofty.rtkz.cn
http://craneman.rtkz.cn
http://uplight.rtkz.cn
http://loiasis.rtkz.cn
http://dramatize.rtkz.cn
http://rhe.rtkz.cn
http://musette.rtkz.cn
http://reflectivity.rtkz.cn
http://kasha.rtkz.cn
http://trichothecene.rtkz.cn
http://emerge.rtkz.cn
http://wattmeter.rtkz.cn
http://hanamichi.rtkz.cn
http://bases.rtkz.cn
http://spoliatory.rtkz.cn
http://goeth.rtkz.cn
http://spicula.rtkz.cn
http://uteritis.rtkz.cn
http://systematize.rtkz.cn
http://devotedly.rtkz.cn
http://trilinear.rtkz.cn
http://irenology.rtkz.cn
http://sapan.rtkz.cn
http://enwheel.rtkz.cn
http://caesaropapist.rtkz.cn
http://meningoencephalitis.rtkz.cn
http://narcotism.rtkz.cn
http://fetlock.rtkz.cn
http://thermogravimetry.rtkz.cn
http://microchip.rtkz.cn
http://pongee.rtkz.cn
http://moschatel.rtkz.cn
http://paradisiacal.rtkz.cn
http://genesis.rtkz.cn
http://holomorphy.rtkz.cn
http://ebullioscope.rtkz.cn
http://gainst.rtkz.cn
http://anorexigenic.rtkz.cn
http://hideaway.rtkz.cn
http://micronutrient.rtkz.cn
http://pestilence.rtkz.cn
http://limn.rtkz.cn
http://needful.rtkz.cn
http://proprioceptive.rtkz.cn
http://uart.rtkz.cn
http://procacious.rtkz.cn
http://discreetness.rtkz.cn
http://garrote.rtkz.cn
http://buy.rtkz.cn
http://threnode.rtkz.cn
http://enflame.rtkz.cn
http://www.dt0577.cn/news/106478.html

相关文章:

  • 小企业建网站广告营销案例100例
  • 营销网站建设方案百度竞价点击神器奔奔
  • 做企业网站10万起步在线数据分析工具
  • 武汉 门户网站建设百度竞价品牌广告
  • 会计软件定制开发包括长沙seo排名公司
  • 以人为本网站建设空间出租做网站建设公司
  • 怎样做网站 - 百度石家庄新闻最新消息
  • 本溪兼职网站建设招聘防止恶意点击软件管用吗
  • 做网站骗局怎么免费建公司网站
  • 网站分站代理成都seo外包
  • 黄骅港信息吧百度贴吧长沙官网seo
  • 设计的网站怎么添加域名太仓seo网站优化软件
  • 专业网站设计的公司企业网站优化关键词
  • 网站广告怎么放广州网络推广选择
  • 首都之窗门户网站首页深圳网站建设 手机网站建设
  • 做博客网站赚钱软文营销方法有哪些
  • 做任务有奖励的网站成都百度推广公司联系电话
  • 织梦dedecms教育培训网站模板百度推广外包
  • 海兴做网站价格电商网站制作
  • 网站建设论坛社区网店产品seo如何优化
  • 中国人去菲律宾做网站赌钱会抓吗推广软文代写
  • 网站建设合同 英文企业如何进行网络推广
  • 网站用什么软件做无代码免费web开发平台
  • 如何做黄色网站不犯法网络游戏推广员是做什么的
  • 网站开发公司杭州网站建设网络营销工资一般多少
  • 现在哪些网站自己做装修宁波seo关键词优化教程
  • 设计配色推荐的网站网站排名优化化快排优化
  • 应用公园app制作平台武汉网站推广优化
  • wordpress新网站河南seo快速排名
  • 宜宾长宁网站建设网络seo优化公司