今天看了一下《大话设计模式》的第一章:简单工厂模式,文章通俗易懂,介绍了程序如何具备可扩展,可维护,易复用。下面简单回顾一下简单设计模式比最原始的程序设计方式的差异,以说明其优点。
一个计算器可以有各种操作符运算,针对一个操作,建一个操作类,这些类继承一个公共的父类Operation. 这些类覆盖父类的方法getResult(int,int),得到各种操作的运算结果。最后建立一个工厂类,用于根据用户界面输入的操作符生成想要的操作类。最后运算得到结果。
操作接口:
public interface Operation {
public int getResult(int a,int b);
}
操作子类:
public class OperationAdd implements Operation{
@Override
public int getResult(int a, int b) {
return (a + b);
}
}
工厂类:
public class Factory {
public Operation getOperation(char o)
{
Operation op = null;
switch(o)
{
case '+':
op = new OperationAdd();
break;
case '-':
op = new OperationDel();
break;
default:
break;
}
return op;
}
}
调用:
public class UserMain {
/**
* @param args
*/
public static void main(String[] args) {
Operation op = Factory.getOperation('+');
int ret = op.getResult(123, 23);
System.out.println(ret);
}
}
这样,有以下好处:
1.各个操作类互相分离,互不干扰。
2.易扩展:如果要增加操作,只需再建立相应的操作子类
3.易维护:只需修改操作类里的逻辑
4.可复用:讲业务逻辑与操作界面分离,业务逻辑部分可以分离给任何可以用到的程序用。
一个计算器可以有各种操作符运算,针对一个操作,建一个操作类,这些类继承一个公共的父类Operation. 这些类覆盖父类的方法getResult(int,int),得到各种操作的运算结果。最后建立一个工厂类,用于根据用户界面输入的操作符生成想要的操作类。最后运算得到结果。
操作接口:
public interface Operation {
public int getResult(int a,int b);
}
操作子类:
public class OperationAdd implements Operation{
@Override
public int getResult(int a, int b) {
return (a + b);
}
}
工厂类:
public class Factory {
public Operation getOperation(char o)
{
Operation op = null;
switch(o)
{
case '+':
op = new OperationAdd();
break;
case '-':
op = new OperationDel();
break;
default:
break;
}
return op;
}
}
调用:
public class UserMain {
/**
* @param args
*/
public static void main(String[] args) {
Operation op = Factory.getOperation('+');
int ret = op.getResult(123, 23);
System.out.println(ret);
}
}
这样,有以下好处:
1.各个操作类互相分离,互不干扰。
2.易扩展:如果要增加操作,只需再建立相应的操作子类
3.易维护:只需修改操作类里的逻辑
4.可复用:讲业务逻辑与操作界面分离,业务逻辑部分可以分离给任何可以用到的程序用。