Java学习从这里JavaVideo开始

JavaVideo java学习从这里开始

当前位置: 主页 > 技术精选 >

设计模式实际应用场景(转)

时间:2012-01-24 20:03来源: 作者:admin 点击:
Java常见设计模式应用场景详细模式介绍可见http://java.chinaitlab.com/special/patterns/Index.html1、抽象工厂应用场景:封装变化

2011年度CSDN高校俱乐部“优秀主席”火热出炉!      点击了解英特尔云计算      2012年1月当选微软MVP的CSDN会员名单揭晓!

设计模式实际应用场景(转)

Java常见设计模式应用场景

详细模式介绍可见

1、抽象工厂
应用场景:封装变化点。创建一系列相互依赖的对象。
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在更多系列对象的创建工作。如何应对这各变化如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合。

public abstract Class AbstractFactory{

    //创建一系列相互关联的对象如游戏场景中相互关联的Road,Building,Tunnel,Jungle对象

    public abstract ProductA createProductA();

    public abstract ProductB createProductB();

    /........

}

 

//多系列体现在ConcreteFactoryA,ConcreteFactoryB这些具体工厂创建该系列下的多个相互关联的对象 

public class ConcreteFactoryA extends AbstractFactory{

     //具体创建ProductA,ProductB的哪个子类再这里指定,如

    //这里相互关联的对象体现在ProductA1和ProductB1够成第一种风格

    public ProductA createProductA(){

        return new ProductA1();

        return new ProductB1();

    }

}

 

public class ConcreteFactoryB extends AbstractFactory{

    //具体创建ProductA,ProductB的哪个子类再这里指定,如

    public ProductA createProductA(){

        return new ProductA2();

        return new ProductB2();

    }

}

 

public abstract class ProductA{

    //其子类是ProductA1,ProductA2

    //定义一些接口;

    public void someMethod();

    //......

}

 

public abstarct class ProductB{

    //其子类是ProductB1,ProductB2

    //定义一些接口;

    public void someMethod();

    //......

}

 

public class Test{

    ProductA a;

    ProductB b;

    public static void main(String[] args){

        //客户端要创建不同风格的游戏场景(多系列)

        AbstractFactory factory = new ConcreteFactoryA();  

        ProductA a = factory.createProductA();

        ProductB b = factory.createProductB();

        play();

        

        //创建另一种风格的游戏场景,只须更改ConcreteFactoryB();

        //

        //AbstractFactory factory = new ConcreteFactoryA();  

        //ProductA a = factory.createProductA();

        //ProductB b = factory.createProductB();

        //play();

        

    }

 

    public static void play(){

        a.someMethod();

        b.someMethod();

    }

}



2、Builder
在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
Builder设计模式是应对这样的需求变化:如何提供一种“封装机制”来隔离“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”,不随着需求改变而改变。

 

//抽象定义如何构建Product及其子对象

public abstract class Builder{

    //获取整体对象

(责任编辑:JavaVideo)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容