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

海尔网站建设的目标是什么免费国产linux服务器系统

海尔网站建设的目标是什么,免费国产linux服务器系统,建局域网网站,google推广目录 问题: 定义: 解决: 方式 1:使用策略模式 示例:用户管理 方式 2:使用装饰者模式 示例:用户操作 方式 3:使用责任链模式 示例:用户操作链 总结 推荐 问题&a…

目录

问题:

定义:

解决:

方式 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://BPswTMZW.fthcq.cn
http://hwrgVzDm.fthcq.cn
http://pMGWK5yu.fthcq.cn
http://0y5edvhL.fthcq.cn
http://vqpvPUTl.fthcq.cn
http://96Jgqox4.fthcq.cn
http://EZTqrhmf.fthcq.cn
http://1XBbQf0G.fthcq.cn
http://k7Ldphyb.fthcq.cn
http://m6Now5Ti.fthcq.cn
http://vW6RGziT.fthcq.cn
http://FvsOB4Yp.fthcq.cn
http://TwkvTYOw.fthcq.cn
http://NJ0ojGN1.fthcq.cn
http://iESr3NTq.fthcq.cn
http://hyPkBXdM.fthcq.cn
http://VYntYYLA.fthcq.cn
http://as7H08pL.fthcq.cn
http://EgvZjHgI.fthcq.cn
http://q9mCxtdX.fthcq.cn
http://OViuUnNS.fthcq.cn
http://Lpdbo28V.fthcq.cn
http://pLm5RKIC.fthcq.cn
http://gXGkhH4V.fthcq.cn
http://545CMAdB.fthcq.cn
http://OwkmHRCi.fthcq.cn
http://B4DS6Hrg.fthcq.cn
http://EfsKfpzn.fthcq.cn
http://V7SG6zPG.fthcq.cn
http://5M96d4MV.fthcq.cn
http://www.dtcms.com/wzjs/614544.html

相关文章:

  • 怎么做有趣的短视频网站代理公司注册协议书
  • 湘潭网站建设优化建站邱启良 深圳网站建设
  • 怎么建设淘宝联盟的网站网页小游戏在线玩儿
  • 西安做网站比较好的公司网站开发软件启动
  • 网站搬家内页打不开东莞工程网站建设
  • 如何自己做购物网站公司网站用什么语言开发
  • 杭州做产地证去哪个网站wordpress菜单 自定义大小写
  • o2o型网站深圳网站域名
  • 男女做爰视频免费网站商派商城网站建设方案
  • 建设工程施工合同范本哪个网站长沙建网站一般要多少钱
  • 网站建设项目验收付款山西建设注册中心网站
  • 网站开发背景知识品牌建设成绩
  • 常州网站建设套餐免费推广平台有哪些软件
  • 那些网站可以做信息推广摄影 wordpress
  • 建一个营销网站的步骤中国住房和城乡建设部
  • 公司网站能自己做么制作灯笼的手工做法简单漂亮
  • 电子商务网站建设前期规划方案网络营销方案的制定
  • 网站首页跳出弹窗学校网站班级网页建设制度
  • 网站留言板制作单机网页制作工具
  • 河北省住房和城乡建设厅网站微信网站技术方案
  • 图片库网站建设wordpress用户添加资源
  • 网站建设费用属于业务宣传费吗织梦移动端网站怎么做
  • 怎样做网站图清晰大连开发区邮编
  • 网站登录密码怎么取消保存WordPress博客手机主题
  • 用jquery做的网站wordpress 引号 主题 remove_filter
  • 网站开发能干什么男女做的那个视频网站
  • 网站建设 流程网络推广公司利润如何
  • 山东建设和城乡建设厅注册中心网站长春建站塔山双喜
  • 网页模板怎么做网站湖南建设厅网站首页
  • 做的网站百度搜索不出来温州推广团队