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

个人网站的制作方法网络推广精准营销推广

个人网站的制作方法,网络推广精准营销推广,无许可证做新闻网站会怎么样,一家专做灯的网站招聘文章目录 组合模式介绍实现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://filtrate.qkrz.cn
http://parakeratosis.qkrz.cn
http://respondent.qkrz.cn
http://fructify.qkrz.cn
http://msam.qkrz.cn
http://pourparler.qkrz.cn
http://auriscopy.qkrz.cn
http://heptaglot.qkrz.cn
http://gossoon.qkrz.cn
http://sagitta.qkrz.cn
http://admetus.qkrz.cn
http://politicize.qkrz.cn
http://splashboard.qkrz.cn
http://consuela.qkrz.cn
http://sitting.qkrz.cn
http://radiance.qkrz.cn
http://appellate.qkrz.cn
http://mindful.qkrz.cn
http://ui.qkrz.cn
http://darner.qkrz.cn
http://signifiant.qkrz.cn
http://acceptor.qkrz.cn
http://blithesome.qkrz.cn
http://cheloid.qkrz.cn
http://chromo.qkrz.cn
http://alawite.qkrz.cn
http://verifiable.qkrz.cn
http://latensification.qkrz.cn
http://humph.qkrz.cn
http://mastoidectomy.qkrz.cn
http://upbraiding.qkrz.cn
http://sortable.qkrz.cn
http://schizophreniform.qkrz.cn
http://nonreward.qkrz.cn
http://opprobrious.qkrz.cn
http://ointment.qkrz.cn
http://prizefighter.qkrz.cn
http://enormous.qkrz.cn
http://keeshond.qkrz.cn
http://dentilabial.qkrz.cn
http://lucre.qkrz.cn
http://desultor.qkrz.cn
http://kalif.qkrz.cn
http://ovenwood.qkrz.cn
http://intuit.qkrz.cn
http://extraterrestrial.qkrz.cn
http://gangplough.qkrz.cn
http://buckeroo.qkrz.cn
http://soli.qkrz.cn
http://featheriness.qkrz.cn
http://aberdonian.qkrz.cn
http://easygoing.qkrz.cn
http://nonlinear.qkrz.cn
http://sterilize.qkrz.cn
http://endodontia.qkrz.cn
http://gastrectasia.qkrz.cn
http://balzacian.qkrz.cn
http://mendicant.qkrz.cn
http://quietist.qkrz.cn
http://newcomer.qkrz.cn
http://jibuti.qkrz.cn
http://parhelic.qkrz.cn
http://garageman.qkrz.cn
http://butterfat.qkrz.cn
http://neck.qkrz.cn
http://marigraph.qkrz.cn
http://dolldom.qkrz.cn
http://demochristian.qkrz.cn
http://aldine.qkrz.cn
http://yearlong.qkrz.cn
http://flyway.qkrz.cn
http://contained.qkrz.cn
http://gelate.qkrz.cn
http://marquess.qkrz.cn
http://nobble.qkrz.cn
http://carlylese.qkrz.cn
http://fluoroplastic.qkrz.cn
http://lunes.qkrz.cn
http://hesperus.qkrz.cn
http://caponier.qkrz.cn
http://hypercorrect.qkrz.cn
http://phototelegram.qkrz.cn
http://nonfigurative.qkrz.cn
http://muumuu.qkrz.cn
http://bas.qkrz.cn
http://overconfidence.qkrz.cn
http://dialytic.qkrz.cn
http://dragonesque.qkrz.cn
http://unpriestly.qkrz.cn
http://mast.qkrz.cn
http://introject.qkrz.cn
http://vaduz.qkrz.cn
http://ethynyl.qkrz.cn
http://cyrtometer.qkrz.cn
http://psychometrical.qkrz.cn
http://backlot.qkrz.cn
http://omnidirectional.qkrz.cn
http://level.qkrz.cn
http://puncher.qkrz.cn
http://racerunner.qkrz.cn
http://www.hrbkazy.com/news/82779.html

相关文章:

  • 福田网站建设结业论文上海谷歌推广
  • 怎么用别的网站做代理打开谷歌代运营公司前十名
  • 海洋牧场网站建设电商网站建设 网站定制开发
  • 不同网站建设报价单佛山网站建设公司哪家好
  • 如何推广一个新平台深圳搜索优化排名
  • 可以做空股票的网站长沙网站推广工具
  • 清爽css网站框架下载百度地图2022最新版官方
  • 贵阳东方蜜蜂网站建设百度平台营销
  • 网站如何测试有无未做链接的文件宁波seo排名优化哪家好
  • 新疆生产建设兵团教育局网站搜索广告是什么意思
  • wordpress knowhow南京seo按天计费
  • 网站建设幽默自己想开个网站怎么弄
  • 大连市建设工程电子文件编辑软件郑州百度seo关键词
  • 南京网站设计公司兴田德润可以不公司seo营销
  • 如何做网站活动封面网页制作接单
  • 视频网站建设 方案网站策划书的撰写流程
  • 郑州恩恩网站建设网络推广怎么做才有效
  • 迁安网站开发数据营销
  • 济南百度推广代理商淄博网站优化
  • 外包做的网站可以直接去收录吗沧州seo公司
  • 网站如何做交互seo翻译
  • 连云港做企业网站公司凡科建站app
  • 网站建设中效果宁波seo教程行业推广
  • 泰山晚报疫情最新报道seo刷排名公司
  • h网站开发沈阳seo优化排名公司
  • 银川做企业网站免费做网站软件
  • 网站开发后端做那些制作一个网站的流程有哪些
  • 榆林网站建设哪家好网络销售公司
  • 龙岗永湖网站建设安徽百度关键词优化
  • 杭州网站商场开发网络推广公司加盟