简单工厂设计模式

来源:互联网 发布:广州移动宽带 知乎 编辑:程序博客网 时间:2024/06/09 21:22

1.什么是设计模式

       设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

2.设计模式的作用

为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石
脉络,如同大厦的结构一样。
那么如何实习那代码的可重用行呢?这个就涉及到面向对象的几个原则:1.单一职责原则,就是一个类只负责一件事情。 2.开放-封
闭原则。对扩展开放,对修改关闭。坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术。 3.里氏代换原则(Liskov Substit
ution Principle,LSP)如果调用的是父类的话,那么换成子类也完全可以
运行。4.依赖倒转原则(Dependency Inversion Principle,DIP),指在软件里面,把父类都替换成它的子类,程序的行为没有变化。
简单的说,子类型能够替换掉它们的父类型。。5.接口隔离原则(Interface Segregation Principle,ISP),使用多个专门的接口比使
用单个接口要好的多。

3.简单工厂设计模式

         简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决创建出哪一种产品类的实例。
 使用情景: 
        再不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作。 


简单实现:

1.父类

public interface Operator {
Object operator(Object... objs);
}

2.子类

//加法
public class OperatorAdd implements Operator {



@Override
public Object operator(Object... objs) {
if(objs!=null && objs.length==2){
return Double.parseDouble(objs[0].toString())+Double.parseDouble(objs[1].toString());
}
return null;
}




}

//减法
public class OperatorSub implements Operator {



@Override
public Object operator(Object... objs) {
if(objs!=null && objs.length==2){
return Double.parseDouble(objs[0].toString())-Double.parseDouble(objs[1].toString());
}
return null;
}




}

3.工厂类

public class Factory {
public static Operator getOperatorInstance(String opt,Object... objs){
switch(opt){
case "+":
return new OperatorAdd();
case "-":
return new OperatorSub();
default:
break;
}
return null;
}
}

4.测试类

public class Test {
public static void main(String[] args) {
String _strnum1;
String _strnum2;
String operator;
Scanner scan=new Scanner(System.in);
System.out.println("请输入参数");
_strnum1=scan.nextLine();
_strnum2=scan.nextLine();
System.out.println("请输入操作:");
operator=scan.nextLine();
System.out.println("计算结果为:"+Factory.getOperatorInstance(operator).operator(_strnum1,_strnum2));
}
}

//补充知识点:Object operator(Object... objs); 的参数为可变参数,可以有也可以没有