Open qlpdream opened 6 years ago
末尾只需要 ``` 不需要java
工厂模式就是建立一个工厂类。到底要实例化谁,将来会不会增加实例化对象,考虑用一个单独的类来做这个创造实例的过程,这就是工厂。
public class Operation {
private double _numberA = 0;
private double _numberB = 0;
public double get_numberA(){
return _numberA;
}
public void set_numberA(double _numberA) {
this._numberA = _numberA;
}
public double get_numberB() {
return _numberB;
}
public void set_numberB(double _numberB) {
this._numberB = _numberB;
}
public double GetResult() {
double result = 0;
return result;
}
}
//创建不同的类实现低耦合
public class OperationAdd extends Operation{
public double GetResult(){
double result = 0;
result = get_numberA() +get_numberB();
return result;
}
}
public class OperationSub extends Operation {
public double GetResult(){
double result = 0;
result =get_numberA() - get_numberB();
return result;
}
}
public class OperationMul extends Operation {
public double GetResult(){
double result = 0;
result = get_numberA() *get_numberB();
return result;
}
}
public class OperationDiv extends Operation {
public double GetResult() {
double result = 0;
if(get_numberB()==0){
try
{
throw new Exception("除数不能为零。");
}catch (Exception e){
System.out.println(e);
}
}
result = get_numberA()/get_numberB();
return result;
}
}
//只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方法实现了计算器的结果
public class OperationFactory {
public static Operation createOperate(String operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
return oper;
}
}
public class text {
public static void main(String[] args){
Operation oper;
oper = OperationFactory.createOperate("+");
oper.set_numberA(1) ;
oper.set_numberB(2);
double result = oper.GetResult();
System.out.println(result);
}
}
java8引入了函数式接口,可以在接口当中提供默认的default关键字修饰的方法实现,和抽象类界限不明显了。但是抽象类和接口还存在着差别:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。2)抽象类当中可以存在非抽象的方法使子类实现相同的方法,接口不能它里面的方法必须用public修饰的声明没有具体实现方法。3)抽象类中的成员变量可以被不同的修饰符来修饰,接口中默认的都是静态常量。4)抽象类是对象的抽象,接口是一种行为规范。
import java.util.*;
import java.util.stream.Collectors;
public class text {
public static void main(String[] args){
int i;
List<String> a = new ArrayList<String>();
a.add("Hello");
a.add("World");
a.add("I");
a.add("am");
a.add("coming");
//for循环输出
System.out.println("for循环输出");
for( i = 0;i < a.size();i ++)
{
System.out.println(a.get(i));
}
//while循环输出
System.out.println("\nwhile循环输出");
i = 0;
while(i<a.size()){
System.out.println(a.get(i));
i++;
}
//foreach循环输出
System.out.println("\nforeach循环输出");
for (String x: a
) {
System.out.println(x);
}
//stream流输出
System.out.println("\nstream流输出");
List<String> s = a.stream().collect(Collectors.toList());
System.out.println(s);
}
}
for循环输出 Hello World I am coming
while循环输出 Hello World I am coming
foreach循环输出 Hello World I am coming
stream流输出 [Hello, World, I, am, coming]