简单工厂设计模式
来源:互联网 发布:广州移动宽带 知乎 编辑:程序博客网 时间: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);
}
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;
}
}
@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;
}
}
@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;
}
}
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));
}
}
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); 的参数为可变参数,可以有也可以没有
阅读全文
0 0
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式------------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 设计模式---------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 数据库基本术语
- ELASTICSEARCH健康red的解决
- java Pattern和Matcher详解
- centsLINUX搭建FTP服务器
- TypeToken 与T泛型
- 简单工厂设计模式
- 微信小程序消息推送配置Token校验失败问题
- 操作系统的类型
- 2017第121届中国进出口商品交易会(广交会)-第二期会刊(参展商名录)
- Android中更新UI的四种常用方式
- 【七夕专题】七夕不做单身汪
- 数据结构--线性表的顺序表示(顺序表)
- 简述设计模式之简单工厂/工厂方法
- 冒泡、插入、选择--三种排序