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

商城网站入驻系统wordpress训网 插件

商城网站入驻系统,wordpress训网 插件,湖北网站建设,哪些网站可以做招生目录 问题#xff1a; 定义#xff1a; 解决#xff1a; 方式 1#xff1a;使用策略模式 示例#xff1a;用户管理 方式 2#xff1a;使用装饰者模式 示例#xff1a;用户操作 方式 3#xff1a;使用责任链模式 示例#xff1a;用户操作链 总结 推荐 问题 定义 解决 方式 1使用策略模式 示例用户管理 方式 2使用装饰者模式 示例用户操作 方式 3使用责任链模式 示例用户操作链 总结 推荐 问题 今天刷面经的时候发现不理解单一职责原则特此记录。 定义 单一职责原则一个模块或类只完成一个功能。 那可以想一想引起类变化的原因有哪些呢 总结下来只有2种 添加修改 如果我们可以将“添加”和“修改”分开那么这个类也就完成了单一职责原则 建议先了解一下   委托者模式因为下面几个设计模式核心都是委托者模式。 解决 在 Java 开发中如果你想 将“引起一个类的变更的原因”进行拆分通常需要遵循单一职责原则让修改Modify和添加Add两个操作独立不相互影响。 可以用 策略模式、装饰者模式、责任链模式、组合模式 等方式来实现。下面是几种常见的方式 方式 1使用策略模式 如果修改和添加是两种不同的操作可以用策略模式拆分让它们各自处理自己的逻辑。 示例用户管理 // 定义通用策略接口 public interface UserOperationStrategy {void execute(User user); }// 修改策略 public class ModifyUserStrategy implements UserOperationStrategy {Overridepublic void execute(User user) {System.out.println(修改用户信息: user.getName());} }// 添加策略 public class AddUserStrategy implements UserOperationStrategy {Overridepublic void execute(User user) {System.out.println(添加新用户: user.getName());} }// 上下文类动态选择操作 public class UserService {private UserOperationStrategy strategy;public void setStrategy(UserOperationStrategy strategy) {this.strategy strategy;}public void executeOperation(User user) {strategy.execute(user);} }// 使用策略 public class Main {public static void main(String[] args) {User user new User(Tom);UserService userService new UserService();// 进行添加操作userService.setStrategy(new AddUserStrategy());userService.executeOperation(user);// 进行修改操作userService.setStrategy(new ModifyUserStrategy());userService.executeOperation(user);} }优点 让“修改”和“添加”逻辑完全解耦互不影响。方便扩展比如再加一个“删除用户”策略。 方式 2使用装饰者模式 如果修改和添加可以叠加可以使用装饰者模式在原功能基础上动态增加额外行为而不改变原类的代码。 示例用户操作 // 定义基础接口 public interface UserOperation {void execute(); }// 基础实现原始功能 public class BaseUserOperation implements UserOperation {Overridepublic void execute() {System.out.println(基础用户操作);} }// 装饰器基类 public abstract class UserOperationDecorator implements UserOperation {protected UserOperation decoratedOperation;public UserOperationDecorator(UserOperation decoratedOperation) {this.decoratedOperation decoratedOperation;}Overridepublic void execute() {decoratedOperation.execute();} }// 添加用户功能 public class AddUserDecorator extends UserOperationDecorator {public AddUserDecorator(UserOperation decoratedOperation) {super(decoratedOperation);}Overridepublic void execute() {super.execute();System.out.println(添加用户);} }// 修改用户功能 public class ModifyUserDecorator extends UserOperationDecorator {public ModifyUserDecorator(UserOperation decoratedOperation) {super(decoratedOperation);}Overridepublic void execute() {super.execute();System.out.println(修改用户);} }// 使用装饰器 public class Main {public static void main(String[] args) {UserOperation operation new BaseUserOperation();// 先添加再修改UserOperation addThenModify new ModifyUserDecorator(new AddUserDecorator(operation));addThenModify.execute();} }输出 基础用户操作 添加用户 修改用户优点 动态组合行为比如 先添加再修改 或者 只修改不添加。方便扩展不用修改原类。 方式 3使用责任链模式 如果修改和添加是流程中的不同步骤可以用责任链模式让不同操作按顺序执行方便扩展。 示例用户操作链 // 责任链接口 public interface UserHandler {void handle(User user); }// 责任链基类 public abstract class AbstractUserHandler implements UserHandler {protected UserHandler nextHandler;public void setNextHandler(UserHandler nextHandler) {this.nextHandler nextHandler;}Overridepublic void handle(User user) {if (nextHandler ! null) {nextHandler.handle(user);}} }// 添加用户处理器 public class AddUserHandler extends AbstractUserHandler {Overridepublic void handle(User user) {System.out.println(添加用户: user.getName());super.handle(user);} }// 修改用户处理器 public class ModifyUserHandler extends AbstractUserHandler {Overridepublic void handle(User user) {System.out.println(修改用户信息: user.getName());super.handle(user);} }// 流程控制 public class Main {public static void main(String[] args) {User user new User(Tom);// 责任链AddUserHandler addHandler new AddUserHandler();ModifyUserHandler modifyHandler new ModifyUserHandler();addHandler.setNextHandler(modifyHandler);// 先添加再修改addHandler.handle(user);} }输出 添加用户: Tom 修改用户信息: Tom总结 方案适用场景主要特点策略模式修改和添加是两种独立操作通过不同策略切换操作逻辑清晰便于扩展装饰者模式需要叠加功能比如先添加再修改允许动态组合多个操作避免修改原类责任链模式操作有固定顺序比如先添加再修改让多个处理器按顺序执行扩展性强 推荐 如果“修改”和“添加”是两种完全独立的操作用 策略模式。如果“修改”和“添加”可能会动态组合用 装饰者模式。如果“修改”和“添加”是必须按固定顺序执行用 责任链模式。
http://www.dnsts.com.cn/news/73318.html

相关文章:

  • 公司网站域名查询企业所得税只对企业征收吗
  • 手机网站建设哪家优惠没有网站可以做搜索引擎营销吗
  • 玄天教学网站建设最新获取网站访客qq接口
  • 有什么做图文长图的网站吗淄博网站关键字优化
  • 嘉定建设机械网站公众号怎么开通原创
  • 全球网站域名后缀万能浏览器手机版下载安装
  • 网站开发标准合同网页设计图片格式
  • 网站建设关键要做好哪些旅游网站排名前十
  • 网站建站费用多少钱营销活动策划公司
  • 网站建设 服务承诺台州网页设计公司
  • 怎么建设网站空间和备案asp.net做网站 推荐书籍
  • 做网站交易平台挣钱吗网络营销学校
  • 合肥网站建设首选众龙wordpress 重制密码
  • 公司网站哪里好简述站点推广有哪些方式
  • 利用access做网站外贸网络推广平台
  • 网站制作怎么做网站优化排名合肥百度快速排名提升
  • 嘉兴网站seo服务锦江区建设和交通局网站
  • 网站建设思路方案万网x3 wordpress
  • 网站业务费如何做记账凭证网页小游戏在线玩4399
  • 公司网站的维护新手怎么引流推广推广引流
  • asp.net网站开发教程 pdf网页设计作品文章
  • 凡科网制作网站教程鹰潭手机网站建设
  • 携程的网站建设ps做好的网站如何做链接
  • 巴青网站制作天猫网站设计特点
  • html网站 下载wordpress商用收费不
  • 成都网站开发 优帮云优化营商环境心得体会个人
  • 已经有了域名怎么做网站dede阿里百秀网站源码
  • 网站工程师招聘一般电商网站做集群
  • 怎么自己搭建一个网站it培训课程
  • 申请网站怎样申请网站制作的主要技术