Java中利用设计模式来代替复杂的if...else...语句(三层以上的嵌套循环),
优点:依据开闭原则:对扩展开,对修改闭,代码简洁,性能提升。
缺点:出现许多的冗余类。
例如:
package com.jiuqi.test;
class MyPaper{
private PaperColor paperColor;
public MyPaper(PaperColor paperColor){
this.paperColor = paperColor;
}
public PaperColor getMyPaperColor(){
return this.paperColor;
}
}
enum PaperColor{
WHITE, BLACK, BLUE, RED
}
public class UseIfElse {
public static void main(String[] args) {
MyPaper myPaper = new MyPaper(PaperColor.RED);
if(myPaper.getMyPaperColor() == PaperColor.BLACK){
System.out.println("You need a black pen!");
}else if(myPaper.getMyPaperColor() == PaperColor.BLUE){
System.out.println("You need a blue pen!");
}else if(myPaper.getMyPaperColor() == PaperColor.RED){
System.out.println("You need a red pen!");
}else if(myPaper.getMyPaperColor() == PaperColor.WHITE){
System.out.println("You need a white pen!");
}
}
}
用下面设计模式来代替:
package com.jiuqi.test;
interface PaperColors{
public void getPenColor();
}
class White implements PaperColors{
@Override
public void getPenColor() {
System.out.println("You need a White pen!");
}
}
class Red implements PaperColors{
@Override
public void getPenColor() {
System.out.println("You need a Red pen!");
}
}
class Blue implements PaperColors{
@Override
public void getPenColor() {
System.out.println("You need a Blue pen!");
}
}
class Black implements PaperColors{
@Override
public void getPenColor() {
System.out.println("You need a black pen!");
}
}
class Green implements PaperColors{
@Override
public void getPenColor() {
System.out.println("You need a Green pen!");
}
}
class MyPapers{
private PaperColors paperColor;
public MyPapers(PaperColors paperColor){
this.paperColor = paperColor;
}
public PaperColors getPaperColor(){
return this.paperColor;
}
public void choicePen(){
this.paperColor.getPenColor();
}
}
public class NoUseIfElse {
public static void main(String[] args) {
MyPapers myPaper = new MyPapers(new Green());
myPaper.choicePen();
}
}