如何在百度搜索到自己的网站电子商务网站建设实习

diannao/2026/1/17 4:35:36/文章来源:
如何在百度搜索到自己的网站,电子商务网站建设实习,.tech 域名 网站,python语言基础知识一、介绍 命令模式#xff08;Command Pattern#xff09;#xff0c;是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框#xff0c;其实它不是一个很”规范“的模式#xff0c;不过#xff0c;就是基于这一点#xff0c;命令模式相对于其…一、介绍 命令模式Command Pattern是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框其实它不是一个很”规范“的模式不过就是基于这一点命令模式相对于其他的设计模式更为灵活多变。我们接触比较多的命令模式个例无非就是程序菜单命令如在操作系统中我们点击”关机“命令系统就会执行一系列的操作如先是暂停处理事件保存系统的一些配置然后结束程序进程最后调用内核命令关闭计算机等对于这一系列的命令用户不用去管用户只需点击系统的关机按钮即可完成如上一系列的命令。而我们的命令模式其实也与之相同将一系列的方法调用封装用户只需调用一个方法执行那么所有这些被封装的方法就会被挨个执行调用。 二、定义 将一个请求封装成一个对象从而让用户使用不同的请求把客户端参数化对请求排队或者记录请求日志以及支持可撤销的操作。 三、使用场景 需要抽象出待执行的动作然后以参数的形式提供出来——类似于过程设计中的回调机制而命令模式正是回调机制的一个面向对象的替代品。在不同的时刻指定、排列和执行请求。一个命令对象可以有与初始请求无关的生存期。需要支持取消操作。支持修改日志功能这样当系统崩溃时这些修改可以被重做一遍。需要支持事务操作。 四、命令模式的UML类图 UML类图 通用模式代码 接收者类 public class Receiver {/** 真正执行具体命令逻辑的方法*/public void action(){System.out.println(具体执行);} } 抽象命令接口 public interface Command {/** 执行具体操作的命令*/void excute(); } 具体命令类 public class ConcreteCommand implements Command {private Receiver receiver;public ConcreteCommand(Receiver receiver) {this.receiver receiver;}Overridepublic void excute() {//调用接收者的相关方法来执行具体逻辑receiver.action();} } 请求者类 public class Invoker {private Command command;public Invoker(Command command) {this.command command;}public void action(){//调用具体命令对象的相关方法执行具体命令command.excute();} } 客户类 public class Client {public static void main(String[] args) {//构造一个接收者对象Receiver receiver new Receiver();//根据接收者对象构造一个命令对象Command command new ConcreteCommand(receiver);//根据具体的对象构造请求者对象Invoker invoker new Invoker(command);//执行请求方法invoker.action();} } 角色介绍 Receiver接收者角色该类负责具体实施或执行一个请求说得通俗点就是执行具体逻辑的角色以本节开头的”关机“命令操作为例其接收者角色就是真正执行各项关机逻辑的底层代码。任何一个类都可以成为一个接收者而在接收者类中封装具体操作逻辑的方法我们则称为行动方法。Command命令角色定义所有具体命令类的抽象接口。ConcreteCommand具体命令角色该类实现了Command接口在execute方法中调用接收者角色的相关方法在接收者和命令执行的具体行为之间加以弱耦合。而execute则通常称为执行方法如本文开头所述”关机“的操作实现具体可能还包含很多相关的操作比如保存数据、关闭文件、结束进程等如果将这一系列具体的逻辑处理看作接收者那么调用这些具体逻辑的方法就可以看作是执行方法。Invoker请求者角色该类的职责就是调用命令对象执行具体的请求相关的方法我们称为行动方法还是用”关机“为例”关机“这个菜单命令一般就对应一个关机方法我们点击了”关机“命令后由这个关机方法去调用具体的命令执行具体的逻辑这里的”关机“对应的这个方法就可以看作是请求者。Client客户端类Client可以创建具体的命令对象并且设置命令对象的接收者。Tips不能把Clinet理解为我们平常说的客户端这里的Client是一个组装命令对象和接受者对象的角色或者你把它理解为一个装配者。 五、简单实现 以推箱子游戏为例一般游戏中会有五个按钮分别是左移、右移、下移、上移和撤销。那么玩游戏的人就是客户端五个按钮就是调用者执行具体按钮命令的方法是命令角色。 接收者角色 public class PushBox {/*** 执行向左命令 */public void toLeft(){System.out.println(向左);}/*** 执行向右命令 */public void toRight(){System.out.println(向右);}/*** 执行向下命令 */public void toDown(){System.out.println(向下);}/*** 执行向上命令 */public void toUp(){System.out.println(向上);}/*** 执行撤销命令 */public void revoke(){System.out.println(撤销);} } 抽象命令接口 public interface Command {/*** 命令执行方法*/void execute();/*** 获取命令类型*/void getCommand(); } 具体命令者左移命令类 public class LeftCommand implements Command{//持有一个接受推箱子游戏对象的引用private PushBox pushBox;public LeftCommand(PushBox pushBox){this.pushBox pushBox;}Overridepublic void execute() {//调用具体命令pushBox.toLeft();}Overridepublic void getCommand() {System.out.print(向左--);} } 具体命令者右移命令类 public class RightCommand implements Command{//持有一个接受推箱子游戏对象的引用private PushBox pushBox;public RightCommand(PushBox pushBox){this.pushBox pushBox;}Overridepublic void execute() {//调用具体命令pushBox.toRight();}Overridepublic void getCommand() {System.out.print(向右--);} } 具体命令者上移命令类 public class UpCommand implements Command{//持有一个接受推箱子游戏对象的引用private PushBox pushBox;public UpCommand(PushBox pushBox){this.pushBox pushBox;}Overridepublic void execute() {//调用具体命令pushBox.toUp();}Overridepublic void getCommand() {System.out.print(向上--);} } 具体命令者下移命令类 public class DownCommand implements Command{//持有一个接受推箱子游戏对象的引用private PushBox pushBox;public DownCommand(PushBox pushBox){this.pushBox pushBox;}Overridepublic void execute() {//调用具体命令pushBox.toDown();}Overridepublic void getCommand() {System.out.print(向下--);} } 具体命令者撤销命令类 public class RevokeCommand implements Command{//持有一个接受推箱子游戏对象的引用private PushBox pushBox;public RevokeCommand(PushBox pushBox){this.pushBox pushBox;}Overridepublic void execute() {//调用具体命令pushBox.revoke();;}Overridepublic void getCommand() {} } 请求者类命令由按钮发起 public class Buttons {private LeftCommand leftCommand; //向左移动的命令对象引用private RightCommand rightCommand; //向右移动的命令对象引用private UpCommand upCommand; //向上移动的命令对象引用private DownCommand downCommand; //向下移动的命令对象引用private RevokeCommand revokeCommand; //撤销命令对象引用private ArrayListCommand commandList new ArrayListCommand();//用于记录命令动作/*** 获取执行命令*/public void getCommandList(){for(Command c : commandList){c.getCommand();}System.out.println();}/*** 设置向左移动的命令对象* * param leftCommand 向左移动的命令对象*/public void setLeftCommand(LeftCommand leftCommand){this.leftCommand leftCommand;}/*** 设置向右移动的命令对象* * param rightCommand 向右移动的命令对象*/public void setRightCommand(RightCommand rightCommand){this.rightCommand rightCommand;}/*** 设置向上移动的命令对象* * param upCommand 向上移动的命令对象*/public void setUpCommand(UpCommand upCommand){this.upCommand upCommand;}/*** 设置向下移动的命令对象* * param downCommand 向下移动的命令对象*/public void setDownCommand(DownCommand downCommand){this.downCommand downCommand;}/*** 设置撤销命令对象* * param revokeCommand 撤销命令对象*/public void setRevokeCommand(RevokeCommand revokeCommand){this.revokeCommand revokeCommand;}/*** 按下向左按钮 */public void toLeft(){leftCommand.execute();commandList.add(leftCommand);}/*** 按下向右按钮 */public void toRight(){rightCommand.execute();commandList.add(rightCommand);}/*** 按下向上按钮 */public void toUp(){upCommand.execute();commandList.add(upCommand);}/*** 按下向下按钮 */public void toDown(){downCommand.execute();commandList.add(downCommand);}/*** 按下撤销按钮 */public void toRevoke(){revokeCommand.execute();commandList.remove(commandList.size()-1);} } 客户端调用 public class Client {public static void main(String[] args) {//首先创建游戏PushBox pushBox new PushBox();//根据游戏构造5种命令LeftCommand leftCommand new LeftCommand(pushBox);RightCommand rightCommand new RightCommand(pushBox);UpCommand upCommand new UpCommand(pushBox);DownCommand downCommand new DownCommand(pushBox);RevokeCommand revokeCommand new RevokeCommand(pushBox);//按钮可以执行不同命令Buttons buttons new Buttons();buttons.setLeftCommand(leftCommand);buttons.setRightCommand(rightCommand);buttons.setUpCommand(upCommand);buttons.setDownCommand(downCommand);buttons.setRevokeCommand(revokeCommand);//执行操作buttons.toLeft();buttons.toDown();buttons.toDown();buttons.toRight();buttons.getCommandList();buttons.toRevoke();buttons.toUp();buttons.toLeft();buttons.toDown();buttons.toUp();buttons.getCommandList();} } 执行结果 向左 向下 向下 向右 向左--向下--向下--向右-- 撤销 向上 向左 向下 向上 向左--向下--向下--向上--向左--向下--向上-- 在这么长的代码之后是不是觉得很烦琐明明可以很简单的实现如下 public class Client {public static void main(String[] args) {//首先创建游戏PushBox pushBox new PushBox();pushBox.toDown();pushBox.toRight();pushBox.toUp();} } 其实设计模式有一个重要的原则对修改关闭对扩展开放。如果使用如上的简单方式那么以后的修改只能去修改PushBox类然后修改Client类这显然违反了这一原则。如果使用命令模式那么Client类无需修改只需要修改PushBox类的内部操作Client类无需知道具体的内部实现。 六、Android源码中的命令模式 1、PackageHandler PackageManagerService中其对包的相关消息处理右其内部类PackageHandler承担其将需要处理的请求作为对象通过消息传递给相关的方法而对于包的安装、移动以及包大小的测量则分别封装为HandlerParams的具体子类InstallParams、MoveParams和MeasureParams。 源码如下 private abstract class HandlerParams {private static final int MAX_RETRIES 4;/*** Number of times startCopy() has been attempted and had a non-fatal* error.*/private int mRetries 0;final boolean startCopy() {boolean res;try {if (DEBUG_INSTALL) Slog.i(TAG, startCopy);if (mRetries MAX_RETRIES) {Slog.w(TAG, Failed to invoke remote methods on default container service. Giving up);mHandler.sendEmptyMessage(MCS_GIVE_UP);handleServiceError();return false;} else {handleStartCopy();res true;}} catch (RemoteException e) {if (DEBUG_INSTALL) Slog.i(TAG, Posting install MCS_RECONNECT);mHandler.sendEmptyMessage(MCS_RECONNECT);res false;}handleReturnCode();return res;}final void serviceError() {if (DEBUG_INSTALL) Slog.i(TAG, serviceError);handleServiceError();handleReturnCode();}abstract void handleStartCopy() throws RemoteException;abstract void handleServiceError();abstract void handleReturnCode();} 可以看出HandlerParams也是一个抽象命令者。 七、总结 优点 命令模式的封装性很好更弱的耦合性更灵活的控制性以及更好的扩展性。 缺点 类的膨胀大量衍生类的创建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress全站同一个标题wordpress谷歌字体

Python入门必学:单引号、双引号与三引号的差异与应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得…

建设企业网站官网登录北京万户网络

使用Paddle-Lite在 Android 上实现实时的人脸检测 1 环境准备2. 部署步骤2.1 下载Paddle-Lite-Demo2.2 运行face_detection_demo项目3 使用Opencv对后处理进行优化4 开启手机摄像头进行人脸检测1 环境准备 参考前一篇在 Android 上使用Paddle-Lite实现实时的目标检测功能 2. …

qq邮箱官网登录入口长春seo关键词排名

在微服务集成——《微服务设计》读书笔记文章中,我们说过服务间的消息传递有几种方式,一种是请求/响应技术,另一种是基于事件的机制。 RPC(远程过程调用) RPC是Remote Procedure Call的简称。 这是请求/响应技术的一种…

海口市做网站的公司网站建设与网页设计心得体会

2023-12-18 官方发布了PuTTY 0.80本次发布主要是针对Terrapin攻击(CVE-2023-48795)的修改发布。 更多详细的内容请查看PuTTY Change Log。 有关Terrapin攻击可用简单参考:警告!!!Terrapin攻击(CVE-2023-48795)~~~ 为了缓解此漏洞…

网站备案需要关站成都公司建网站

【LetMeFly】106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看) 力扣题目链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-an…

xml天气预报网站怎么做ppt网站建设

本文使用 Zhihu On VSCode 创作并发布Paper | Code本文一作实在是太大佬了,让我和小伙伴焦虑了好一阵子。作者主页送你们,将这份焦虑传递下去。Introduction图生成有很多用处:建模physical and social interactions发现新的化学和分子结构构建…

有没有学做衣服的网站wordpress 修改网址导航

1.智能GPT 项目地址:智能GPT:你只要提供OpenAI的API Key,那么它就可以根据你设定的目标,采用Google搜索、浏览网站、执行脚本等方式 主要语言:Python 推荐理由:这是由开发者Significant Gravitas推出的项目…

游戏网站建设杭州wordpress搜索框删除

转载自 MySQL last_insert_id()函数 MySQL LAST_INSERT_ID函数简介 在数据库设计中,我们经常使用代理键使用AUTO_INCREMENT属性为主键列生成唯一的整数值。 当您将新行插入到具有AUTO_INCREMENT列的表中时,MySQL会自动生成一个唯一的整数&#xff0c…

网站总是打不开网站页脚模板

前言如果有人问你“数据库事务有哪些特性”?你可能会很快回答出原子性、一致性、隔离性、持久性即ACID特性。那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可以直接跳过不看啦(#^.^#)先说结论:redo log重做日志用来保证事…

无锡做网站选优易信米问外贸论坛

📖 前言:在网络安全防护领域,防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙,屏蔽源于外网的各类网络攻击。但是,防火墙由于自身的种种限制,并不能阻止所有攻击行为…

微信官网网站模板闽候县建设局网站

https://dev.mysql.com/doc/index-other.htmlalso, you can visit https://github.com/datacharmer/test_db for employee data.

网站建设群网站建站的技术解决方案

人工智能(AI)和深度学习是当今技术领域最热门的话题之一。如果你想要入门深度学习,以下是一些建议和步骤,可以帮助你开始这段旅程: 1. 建立数学基础 深度学习依赖于数学,特别是线性代数、概率论、统计学和…

公共化网站建设方案wordpress 谷歌插件

当涉及到构建安全的应用程序时,用户身份验证和授权是至关重要的一环。在Node.js中,我们可以利用一些流行的库和技术来实现这些功能,确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

网站建设与管理pdf电商运营是干嘛的

很多有具有参考价值的资料,比如学生写论文报告,老师做课件,找工作准备简历都需要参考其他人的成果。在互联网上,这类资料一般不是普通的html网页,而是以Word、ppt(s)、Excel、pdf等格式存在的。虽然这些文件不象Html文…

开店装修话做那个网站找工人合肥做网站建设公司

一、概述 在NX二次开发中有很多命令从界面上看起开相似,但实质确不同,个人人为一是出于对软件产权的保护,增加二次开发的难度,二是由于NX在不断地发展和版本交替中为了保留老用户的操作习惯,故意用新控件做成老控件的…

建一个网站的费用wordpress副标题代码

一、 CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候&#xff0c…

电商网站的建设与运营开公司注册空头公司做网站

前言 Django自带了一个名为FileField的字段,用于处理文件上传。然而,有时我们需要更多的控制权,例如定义文件的存储路径、文件名以及文件类型。在本篇文章中,我们将探讨如何自定义Django附件存储模型。 创建attachment应用 pyt…

网站开发需要如何压缩代码临桂住房和城乡建设局网站

简介 这篇文章主要描述如何通过主脚本去调用其他脚本中的方法,调用的过程中可能出现哪些坑,如何避免。 目录 1. 主脚本调用其他脚本的方法 1.1. bash方法 1.2. source方法 2. 避坑技巧 2.1. 路径配置无效 2.2. source变量冲突 3. 总结 1. 主脚本调…

做关键字要改网站那些知名网站是外包做的

Linux read命令介绍 read命令是处理从键盘或其它输入设备读入字符的一个简单命令。常见用法就是在shell脚本中用来读取用户的输入。除此之外,也可以从文件中读取内容或处理由其它命令输出的内容。 Linux read命令适用的Linux版本 read命令在所有主流的Linux发行版…

做网站优化就是发文章吗网站目录结构

人工智能的未来发展前景怎么样?人工智能的未来发展前景非常广阔,有以下几个方面的发展趋势和前景: 1、人工智能的未来发展前景-应用领域扩展:人工智能将在各个领域得到广泛应用,包括医疗保健、金融、交通、制造业、农业…