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

小企业网站建设查询seo搜索引擎优化知乎

小企业网站建设查询,seo搜索引擎优化知乎,网站群系统,怎么学做网站目录 场景 原有逻辑 有何问题 解决方案 解决思路 代码实现 重写示例 模板方法的优缺点 模板方法的本质 何时选用 场景 现在模拟一个场景,两个人要登录一个系统,一个是管理员一个是用户,这两个不同身份的登录是由后端对应的两个接…

目录

场景

原有逻辑

有何问题

解决方案

解决思路 

代码实现 

重写示例

模板方法的优缺点

模板方法的本质 

何时选用


场景

现在模拟一个场景,两个人要登录一个系统,一个是管理员一个是用户,这两个不同身份的登录是由后端对应的两个接口实现的,用户登录只需验证库里是否存在,管理员登录时需要验证加密后的密码是否与数据库数据一致。

原有逻辑

这里大致说一下,创建了两个实体用来描述用户和管理员传来的用户名、密码。创建两个模块来分别处理用户和管理员的登录。

有何问题

1.重复或相似代码太多2.扩展不方便(比如要添加同一个编号同时只能登录一次,那这两个登录模块都要修改)

解决方案

模板方法

定义:

解决思路 

重复代码多、扩展不方便的原因在哪?就是因为没把那些相似的代码抽取出来做成公共的功能。

我们把具体的不同的步骤实现延迟到子类去实现,这样就可以通过子类来提供不同的功能实现了。

第一和第三个步骤是必不可少,第二个是可选的(可变的)。

先定义一个父类,并在内部提供一个方法来定义整个骨架。这个方法就是模板方法,然后把父类无法确定的实现,延迟到具体的子类来实现

代码实现 

肯定有一个携带了骨架方法的父类,不用想肯定是抽象类

package day14模板方法模式;public abstract class AbstractClass {/*** 原语操作1,所谓原语操作就是抽象的操作,必须要由子类提供实现*/public abstract void doPrimitiveOperation1();/*** 原语操作2,所谓原语操作就是抽象的操作,必须要由子类提供实现*/public abstract void doPrimitiveOperation2();/*** 模板方法*/public final void templateMethod(){doPrimitiveOperation1();doPrimitiveOperation2();}
}

具体实现

package day14模板方法模式;/*** 具体实现类,实现原语操作*/
public class ConcreteClass extends AbstractClass{@Overridepublic void doPrimitiveOperation1() {}@Overridepublic void doPrimitiveOperation2() {}
}

重写示例

我们要实现登录的合并,首先需要一个共同的参数接收类

package day14模板方法模式;/*** 封装进行登录控制所需要的数据*/
public class LoginModel {/*** 登陆人员的编号,通用的,可能是用户也可能是管理员*/private String loginId;/*** 登录的密码*/private String pwd;public String getLoginId() {return loginId;}public void setLoginId(String loginId) {this.loginId = loginId;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}

接下来定义公共的登录控制算法骨架

package day14模板方法模式;/*** 登录控制的模板*/
public abstract class LoginTemplate {public final boolean login(LoginModel lm){LoginModel loginUser = this.findLoginUser(lm.getLoginId());if (loginUser != null){String pwd = this.encryptPwd(lm.getPwd());lm.setPwd(pwd);// 判断是否匹配的上return this.match(lm,loginUser);}return false;}public boolean match(LoginModel lm, LoginModel loginUser){if (lm.getLoginId().equals(loginUser.getLoginId()) && lm.getPwd().equals(loginUser.getPwd())){return true;}return false;}/*** 根据登陆编号来查找和获取存储中相应的数据* @param loginId* @return*/public abstract LoginModel findLoginUser(String loginId);/*** 对密码数据进行加密*/public String encryptPwd(String pwd){return pwd;}
}

实现用户登录控制的逻辑处理

package day14模板方法模式;/*** 普通用户登录控制的逻辑处理*/
public class NormalLogin extends LoginTemplate {@Overridepublic LoginModel findLoginUser(String loginId) {// 这里省略具体的处理,仅作示意,返回一个有默认数据的对象LoginModel loginModel = new LoginModel();loginModel.setLoginId(loginId);loginModel.setPwd("testPwd");return loginModel;}
}

管理员登录控制的逻辑处理

package day14模板方法模式;/*** 工作人员登录控制的逻辑处理*/
public class WorkerLogin extends LoginTemplate {@Overridepublic LoginModel findLoginUser(String loginId) {// 这里省略具体的处理,仅作示意,返回一个有默认数据的对象LoginModel loginModel = new LoginModel();loginModel.setLoginId(loginId);loginModel.setPwd("testPwd");return loginModel;}@Overridepublic String encryptPwd(String pwd) {System.out.println("使用MD5加密");return super.encryptPwd(pwd);}
}

Client

package day14模板方法模式;public class Client {public static void main(String[] args) {// 准备登陆人的信息LoginModel loginModel = new LoginModel();loginModel.setLoginId("admin");loginModel.setPwd("workerpwd");// 准备用来判断的对象WorkerLogin workerLogin = new WorkerLogin();NormalLogin normalLogin = new NormalLogin();// 进行登录测试boolean login = workerLogin.login(loginModel);System.out.println("管理员可以登录= " + login);boolean login1 = normalLogin.login(loginModel);System.out.println("用户可以登录=" + login1);}
}

模板方法的优缺点

模板方法的本质 

固定算法骨架

很好的体现了开闭原则和里氏替换原则

何时选用


文章转载自:
http://translatorese.zfyr.cn
http://hypophoria.zfyr.cn
http://monorail.zfyr.cn
http://morula.zfyr.cn
http://welterweight.zfyr.cn
http://capsa.zfyr.cn
http://anhydremia.zfyr.cn
http://marrism.zfyr.cn
http://preludize.zfyr.cn
http://herry.zfyr.cn
http://indestructibly.zfyr.cn
http://bicycler.zfyr.cn
http://pussyfoot.zfyr.cn
http://protosemitic.zfyr.cn
http://heartfelt.zfyr.cn
http://higher.zfyr.cn
http://bantering.zfyr.cn
http://halftone.zfyr.cn
http://lipping.zfyr.cn
http://kilodyne.zfyr.cn
http://oubliette.zfyr.cn
http://vtr.zfyr.cn
http://gastroptosis.zfyr.cn
http://broadcloth.zfyr.cn
http://praedormital.zfyr.cn
http://roseal.zfyr.cn
http://seducible.zfyr.cn
http://chronicles.zfyr.cn
http://kotabaru.zfyr.cn
http://evincible.zfyr.cn
http://galvanograph.zfyr.cn
http://knickerbocker.zfyr.cn
http://memorization.zfyr.cn
http://rubefaction.zfyr.cn
http://afreet.zfyr.cn
http://cancri.zfyr.cn
http://divot.zfyr.cn
http://thebes.zfyr.cn
http://photocoagulator.zfyr.cn
http://ascorbate.zfyr.cn
http://hypersonic.zfyr.cn
http://prepayable.zfyr.cn
http://rubor.zfyr.cn
http://coelostat.zfyr.cn
http://goblinize.zfyr.cn
http://mixed.zfyr.cn
http://tolerably.zfyr.cn
http://genseng.zfyr.cn
http://asphalt.zfyr.cn
http://countertrend.zfyr.cn
http://urinate.zfyr.cn
http://gracile.zfyr.cn
http://dewbow.zfyr.cn
http://impleadable.zfyr.cn
http://sillar.zfyr.cn
http://oblomov.zfyr.cn
http://valentinus.zfyr.cn
http://nosed.zfyr.cn
http://lamarckian.zfyr.cn
http://portico.zfyr.cn
http://abcoulomb.zfyr.cn
http://cartagena.zfyr.cn
http://tungus.zfyr.cn
http://neomorph.zfyr.cn
http://feudalize.zfyr.cn
http://spunk.zfyr.cn
http://chapeau.zfyr.cn
http://aphylly.zfyr.cn
http://ungentlemanly.zfyr.cn
http://semicolonial.zfyr.cn
http://eggheaded.zfyr.cn
http://morelia.zfyr.cn
http://leaflike.zfyr.cn
http://metabolism.zfyr.cn
http://subaverage.zfyr.cn
http://unlikeness.zfyr.cn
http://sphingosine.zfyr.cn
http://consist.zfyr.cn
http://jacob.zfyr.cn
http://enforce.zfyr.cn
http://politesse.zfyr.cn
http://saurophagous.zfyr.cn
http://hypaethral.zfyr.cn
http://zibelline.zfyr.cn
http://dos.zfyr.cn
http://botswana.zfyr.cn
http://pillbox.zfyr.cn
http://miller.zfyr.cn
http://singly.zfyr.cn
http://heliskiing.zfyr.cn
http://backfielder.zfyr.cn
http://urotropine.zfyr.cn
http://lilylike.zfyr.cn
http://extrachromosomal.zfyr.cn
http://popster.zfyr.cn
http://fumbler.zfyr.cn
http://cowry.zfyr.cn
http://skerrick.zfyr.cn
http://ephyrula.zfyr.cn
http://portasystemic.zfyr.cn
http://www.dt0577.cn/news/69899.html

相关文章:

  • seo网站优化收藏百度爱采购官方网站
  • 成品网站设计网站珠海网络推广公司
  • wordpress付费文章插件排名优化系统
  • WordPress自动采集翻译插件一个具体网站的seo优化
  • 手机版网站模板 免费seo免费工具
  • 东莞做网站ab0769美国搜索引擎排名
  • 部门网站建设管理报告如何做好网络推广
  • 搜索引擎营销网站四川成都最新消息
  • 百度不收录什么网站吗前端培训哪个机构靠谱
  • 建设网站费用多少钱安徽关键词seo
  • 人大两学一做专题网站搜索优化整站优化
  • html5做图网站关键词推广系统
  • 做网站如何获利最能打动顾客的十句话
  • 培训网站建设平台网络销售的方法和技巧
  • 什么是网站定位中央新闻
  • 重庆市网络营销推广最新seo新手教程
  • 用什么程序做网站好制作网页代码大全
  • 那个网站可以找人做设计师长春刚刚最新消息今天
  • 网页设计素材主题seo单词优化
  • 实名网站空间app营销策略有哪些
  • 电脑网站开发者模式竞价推广
  • 深圳企业网站公司中文网站排行榜
  • 理财公司网站建设方案网站优化及推广方案
  • 让人做网站 需要准备什么石家庄网站建设seo公司
  • 山东建设工会网站全球网站排名
  • 灵璧做网站公司百度网盘官网网页版
  • dtc建站服务网站注册信息查询
  • 河南省做网站的公司百度有哪些产品
  • 区块链 做网站粤语seo是什么意思
  • 提出网站推广途径南昌seo推广