[size=large]
设计模式
门面模式
门面模式又称Facade模式使用Facade模式可以为子系统中的一组接口提供一个一致的界面;简化方法的调用、降低系统之间的耦合度。
下面来看下门面模式的使用方式:
//定义一个Court类、并提供一些方法
Public class Court{
Public void register(){
//立案
}
Public void hold ACourt(){
//开庭
}
Public void adjudge(){
//判决
}
Public void intercede(){
//调解
}
}
再定义layeroffice类表示法院所提供 的一些操作
Public class LawyerOffer(){
Public void writeOffice{
//写诉状
}
Public void collectEvidence(){
//收集证据
}
}
对于我们开发者而言、当我们需要调用Court类和LawyerOffer中的方法时,需要了解Court类和LawyerOffer类中的各个方法、在分工协作中,客户端会设计到多个细粒度的方法;这样会带来子系统之间的耦合度过于强的问题、而Facade模式正可以解决这问题。
下面在LawsuitFacade类中、我们使用粗粒度的方法law()以及execute()来对Court以及LawyerOffer类中的方法进行包装;对开发人员来说、类中细粒度的方法被隐藏了。
然后在客户端类中直接与调用者打交道、不用直接调用了。
Public class Client{
Public void test(){
LawsuitFacade facade = new LawsuitFacade();
Facade.law();
Facade.execute();
}
}
Public static void main(String[] args){
Client client = new Client();
Client.test();
}
模版方法模式
抽象角色EveningPlan类定义了多个方法、其中act()方法声明为abstract的、以便让子类实现、这个操作被称为基本操作、它是构成顶级逻辑的一个组成步骤。它是构成顶级逻辑的一个组成步骤。
executePlan()方法给出了顶级逻辑的实现、是抽象角色中顶级行为的实现,这个方法是通常被称为模版方法
Public abstract class EveningPlan{
Public final void sing(){
//歌唱家
}
Public abstract void act();
Public void dance(){
//舞蹈家
}
Public void executePlan(){
This.sing();
This.act();
This.dance();
}
}
当继承EveningPlan类时、就必须实现act()方法
Public class Client extends EveningPlan{
Public void act(){
//演员家
}
Public static void main(String[] args){
Client client = new Client();
Client .executePlan();
}
}
如果需要限制子类不能对模板类的顶级逻辑进行重写操作、只需要为模板类中的executePlan()方法加上final修饰符即可。
使用模版方法模式可以将大的方法重构、将程序中的变化部分抽象出来,交给子类来实现。
还允许你建立独立的类负责独立的行为、从而将独立的行为委派到独立的对象里面。
[/size]
设计模式
门面模式
门面模式又称Facade模式使用Facade模式可以为子系统中的一组接口提供一个一致的界面;简化方法的调用、降低系统之间的耦合度。
下面来看下门面模式的使用方式:
//定义一个Court类、并提供一些方法
Public class Court{
Public void register(){
//立案
}
Public void hold ACourt(){
//开庭
}
Public void adjudge(){
//判决
}
Public void intercede(){
//调解
}
}
再定义layeroffice类表示法院所提供 的一些操作
Public class LawyerOffer(){
Public void writeOffice{
//写诉状
}
Public void collectEvidence(){
//收集证据
}
}
对于我们开发者而言、当我们需要调用Court类和LawyerOffer中的方法时,需要了解Court类和LawyerOffer类中的各个方法、在分工协作中,客户端会设计到多个细粒度的方法;这样会带来子系统之间的耦合度过于强的问题、而Facade模式正可以解决这问题。
下面在LawsuitFacade类中、我们使用粗粒度的方法law()以及execute()来对Court以及LawyerOffer类中的方法进行包装;对开发人员来说、类中细粒度的方法被隐藏了。
然后在客户端类中直接与调用者打交道、不用直接调用了。
Public class Client{
Public void test(){
LawsuitFacade facade = new LawsuitFacade();
Facade.law();
Facade.execute();
}
}
Public static void main(String[] args){
Client client = new Client();
Client.test();
}
模版方法模式
抽象角色EveningPlan类定义了多个方法、其中act()方法声明为abstract的、以便让子类实现、这个操作被称为基本操作、它是构成顶级逻辑的一个组成步骤。它是构成顶级逻辑的一个组成步骤。
executePlan()方法给出了顶级逻辑的实现、是抽象角色中顶级行为的实现,这个方法是通常被称为模版方法
Public abstract class EveningPlan{
Public final void sing(){
//歌唱家
}
Public abstract void act();
Public void dance(){
//舞蹈家
}
Public void executePlan(){
This.sing();
This.act();
This.dance();
}
}
当继承EveningPlan类时、就必须实现act()方法
Public class Client extends EveningPlan{
Public void act(){
//演员家
}
Public static void main(String[] args){
Client client = new Client();
Client .executePlan();
}
}
如果需要限制子类不能对模板类的顶级逻辑进行重写操作、只需要为模板类中的executePlan()方法加上final修饰符即可。
使用模版方法模式可以将大的方法重构、将程序中的变化部分抽象出来,交给子类来实现。
还允许你建立独立的类负责独立的行为、从而将独立的行为委派到独立的对象里面。
[/size]