设计模式-单一职责模式
来源:互联网 发布:淘宝买家号开店 编辑:程序博客网 时间:2024/06/04 08:49
最近在很多场合都看见设计模式的影子,一直以来,都投入主要时间在搞算法与数据结构,很来发现设计模式真的很重要。有的时候代码的可维护、可重用、可扩展确实胜过单纯的算法效率高。所以拾起大牛书籍《大话设计模式》同时参考网上诸大牛的博客,开始我的设计模式之旅。
尝试单一职责模式可以拆开。
今天先介绍一下单一职责模式。
概念:
就一个类而言应该只有一个因其他变化的原因。
流程:
问题由来:设类或接口类C负责两个不同不同的职责:职责T1,职责T2。当由于职责T1需求改变进而需要修改类C时,可能导致职责T2收到不可预知的影响。
解决方案:分别建立两个类C1、C2,分管职责T1,T2。
优缺点:
1.优点:
(1)、降低类的复杂度;
(2)、 易维护、易扩展、可读性强
2.缺点:
使类或接口的数目增加, 难以控制。
示例代码
下面代码就没有遵循单一职责模式,如Operation即完成了+又完成了-。
package Pattern;import java.util.Scanner;class Operation {String operationName;public Operation(String tempOperationName) {operationName = tempOperationName;}public int GetResult(int opA, int opB) {if (operationName.equals("+"))return opA + opB;elsereturn opA - opB;}}public class Pattern {public static void main(String[] args) {try {Scanner input = new Scanner(System.in);int opA, opB, result;opA = input.nextInt();opB = input.nextInt();Operation myOperation = new Operation("+");result = myOperation.GetResult(opA, opB);System.out.println(result);} catch (Exception e) {e.printStackTrace();}}}
尝试单一职责模式可以拆开。
package Pattern;import java.util.Scanner;class AddOperation {public int GetResult(int opA, int opB) {return opA + opB;}}class SubOperation {public int GetResult(int opA, int opB) {return opA - opB;}}public class Pattern {public static void main(String[] args) {try {Scanner input = new Scanner(System.in);int opA, opB, result;opA = input.nextInt();opB = input.nextInt();AddOperation myAddOperation = new AddOperation();result = myAddOperation.GetResult(opA, opB);System.out.println(result);opA = input.nextInt();opB = input.nextInt();SubOperation mySubOperation = new SubOperation();result = mySubOperation.GetResult(opA, opB);System.out.println(result);} catch (Exception e) {e.printStackTrace();}}}
0 0
- 设计模式-单一职责
- 设计模式--单一职责
- 【设计模式】单一职责模式
- 设计模式-单一职责模式
- 设计模式-单一职责原则
- 设计模式-单一职责原则
- 设计模式---->单一职责原则
- 设计模式---单一职责原则
- 设计模式:单一职责原则
- 设计模式 单一职责原则
- 设计模式-单一职责原则
- 设计模式:单一职责原则
- 【设计模式】单一职责原则
- 设计模式:单一职责原则
- 设计模式-单一职责原则
- 设计模式-单一职责原则
- 设计模式:单一职责原则
- 设计模式:单一职责原则
- Java中的Set,List,Map的区别
- 12 Linux下新建用户和切换当前用户
- semaphore---Dijkstra
- 关于wampserver无法启动mysql数据库的问题
- Select函数实现原理分析
- 设计模式-单一职责模式
- Leetcode_spiral-matrix-ii
- Storm中Topology任务调度策略
- 【C解析之三】C语言的内存分配
- warning:deprecated conversion from string constant to 'char *'解决方案
- iOS实现本地通知(local notification)的方法
- 【D3D】一个D3D程序的基本结构
- SQL的执行顺序
- 【C解析之七】文件进阶