1、面向对象的设计思想:
- 可维护:要改,只需要更改要更改的地方,不需要更改的地方不动, 提取可能会发生改变的代码
- 可复用:一次编写,多次重复使用,公共部分提出,避免代码冗余
- 可扩展:可以添加新的需求,而不影响以前的功能,亦不需要对以前代码做改动(或者改动最少),实现高内聚,低耦合
- 灵活性好:可能满足多种需求
2、简单工厂设计模式
package com.shma.simpleFactoryPattern;
/**
* 简单工厂模式设计一个计算器,实现加减乘除
* @author Administrator
*
*/
public class TestCalculatorApp {
public static void main(String[] args) {
OperEnum tmpEnum = OperEnum.ADD;
Operation operation = OperationFactory.getOperation(tmpEnum);
operation.setNumberA(1.3);
operation.setNumberB(1.5);
if(operation != null) {
System.out.println(operation.operation());
}
}
}
package com.shma.simpleFactoryPattern;
public class OperationFactory {
public static Operation getOperation(OperEnum oper) {
switch(oper) {
case ADD :
return new AddOper();
case SUB :
return new SubOper();
case MUL :
return new MulOper();
case DIV :
return new DivOper();
default :
return null;
}
}
}
package com.shma.simpleFactoryPattern;
public enum OperEnum {
ADD, SUB, MUL, DIV
}
package com.shma.simpleFactoryPattern;
/**
* 实现计算器的抽象操作类
* @author Administrator
*
*/
public abstract class Operation {
protected double numberA = 0;
protected double numberB = 0;
public abstract double operation();
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
}
package com.shma.simpleFactoryPattern;
/**
* 加法操作
* @author Administrator
*
*/
public class AddOper extends Operation {
@Override
public double operation() {
return numberA + numberB;
}
}
package com.shma.simpleFactoryPattern;
public class DivOper extends Operation {
@Override
public double operation() {
if(numberB == 0) {
return -1;
}
return this.numberA / this.numberB;
}
}
package com.shma.simpleFactoryPattern;
/**
* 乘法运算
* @author Administrator
*
*/
public class MulOper extends Operation {
@Override
public double operation() {
return numberA * this.numberB;
}
}
package com.shma.simpleFactoryPattern;
/**
* 减法运算
* @author Administrator
*
*/
public class SubOper extends Operation {
@Override
public double operation() {
return this.numberA - this.numberB;
}
}
3、UML类图
矩形框:类(类分为三层,第一层为类名,第二层为类的字段或者属性,第三层为类的行为或方法,+表示public,-表示private,#表示protected,类名为斜体则该类为抽象类)
矩形框:接口(接口分为两层,第一层接口名,上方为<<interface>>,第二层为接口的行为或者方法,+表示public,-表示private,#表示protected)
空心三角形+实线:继承关系(箭头指向父类)
空心三角形+虚线:实现接口(箭头指向接口)
实线箭头:表示关联关系(被指向的为指向的一个属性)
空心菱形+实线箭头:表示聚合关系(依赖关系弱)
实心菱形+实线箭头:表示组合关系(强的依赖关系,被包含的是包含的一部分,不可分隔)
虚线箭头:表示依赖关系
相关推荐
thief idea版插件jar包
[ng-book.2r60随书代码]ng-book.2.Angular.4.r60.2017.4.code-samples.zip
[ng-book.2r53随书代码]ng-book.2.r53.2017.3.code-samples.zip
linux虚拟化环境-----模拟路由交换工具,强大的实验环境搭建教程。
ng-book-The.Complete.Book.on.AngularJS.pdf
LFS-BOOK-6.0-NOCHUNKS.html-源码.rar
ng-book-The.Complete.Book.on.AngularJS 2
Dive deep into dubbo user guide or download pdf to find more details, or Read dubbo admin guide or download pdf for dubbo application administration topics. Interested in how dubbo is designed, or ...
Teradata FS-LDM 10.00.00 Reference Guide-Book.zip
LFS-BOOK-6.2.pdf,做自己的linux。
Version Control with Subversion svn-book.chm TortoiseSVN-1.4.3.8645-win32-svn-1.4.3是由http://www.163disk.com/fileview_241204.html上传到163网盘,供大家免费下载。
ng-book.2.Angular.4.r58.2017.3.code-samples
LFS-BOOK-6.8.rar
希望对于学习QML的同学有所帮助希望对于学习QML的同学有所帮助
pcasm-book-simplified-chinese.pdf是一个翻译成中文的汇编语言教程,不是详细的介绍汇编语言,只有一些最基本的方面的介绍。不过这本书是叙述在80386和后来的处理器如何在保护模式下编程。用NASM和DJGPP C/C++...
EasyARM2100book-error.pdf
资源来自pypi官网。 资源全名:jupyter-book-0.7.2.tar.gz
Advanced Swift 5 A deep dive into Swift’s features, from low-level programming to high-level abstractions. by Chris Eidhof, Ole Begemann, Florian Kugler, and Ben Cohen
book-insert.ejs
html-book-20200816.7z