facade模式实例

来源:互联网 发布:深藏身与名 知乎 编辑:程序博客网 时间:2024/04/30 04:27

门面类可以通过门面类进行各类的通讯,而且各类自身也可以直接被调用。

1 有一个类

package com.javapatterns.facade;

public class SignalOutput


    
public SignalOutput()
    
{
    }

    
    
public void sigStar()
    

    
        System.out.print(
"sigStar");
    
    }

    
    
    
public void sigRectangle()
    

    
        System.out.print(
"sigRect");
    
    }

    
    
public void sigCircle()
    

    
        System.out.print(
"?"); 
    
    }
 

}
 

 2 另外一个类

 

package com.javapatterns.facade;

public class LineOutput


    
public LineOutput()
    
{
    }

    
    
public void singleLine()
    

    
        System.out.println(
"------------------------------");
    
    }

    
    
public void doubleLine()
    

    
        System.out.println(
"=============================="); 
    
    }
 

}



 

3 再一个

 

package com.javapatterns.facade;

public class StringOutput

    
    
public StringOutput()
    
{
    }

    
    
public void StringOut(String str)
    

    
        System.out.println(str); 
    
    }
 

}



 

4 facade类

 

package com.javapatterns.facade;

public class Facade

    
    
public Facade()
    
{
    }

    
    
public void ProcessTitle()
    

    
        StringOutput str 
= new StringOutput();
        LineOutput line 
= new LineOutput();
        SignalOutput sig 
= new SignalOutput();
        
        line.doubleLine();
        sig.sigRectangle();
        str.StringOut(
"something here"); 
    
    }

    
    
public void ProcessSubTitle()
    

    
        StringOutput str 
= new StringOutput();
        LineOutput line 
= new LineOutput();
        SignalOutput sig 
= new SignalOutput();
        
        line.singleLine();
        sig.sigCircle();
        str.StringOut(
"sub title 1.1");
    
    }

    
    
public void ProcessItem()
    

    
        StringOutput str 
= new StringOutput();
        LineOutput line 
= new LineOutput();
        SignalOutput sig 
= new SignalOutput();
        
        sig.sigStar();
        str.StringOut(
"process item"); 
    
    }
 

}



 

5 调用

 

package com.javapatterns.facade;

public class FacadeSample

    
static public void main(String args[])
    

    
        Facade facade 
= new Facade();
        
        facade.ProcessTitle();
        facade.ProcessSubTitle();
        facade.ProcessItem();
        facade.ProcessItem();
        facade.ProcessItem(); 
    
    }
 

}


 

运行结果:

init:
deps-jar:
compile-single:
run-single:
==============================
sigRectsomething here
------------------------------
?sub title 1.1
sigStarprocess item
sigStarprocess item
sigStarprocess item