工厂模式解析

“工厂模式”。它可以让在主调程序中,只需与工厂服务联系在一起,来获得工厂的引用,不与具体的实现类关联在一起,这样代码就提供了很好的解耦性。

//person接口定义
package project

public interface Person
{
    public String sayHello(String name);
    public String sayGoodBye(String name);
}


//下面是它的两个实现类

//下面是person的实现类Chinese
//================================

package project

public class Chinese implements Person
{
    public String sayHello(String name)
    {
        return name + ",您好";
    }

    public String sayGoodBye(String name)
    {
        return name + ",下次再见";
    }
}

 

//下面是Person接口的另一个类American
//================================

package project

public class American implements Person
{
    public String sayHello(String name)
    {
        return name + ",Hello";
    }

    public String sayGoodBye(String name)
    {
        return name + ",Good Bye";
    }
}

来源:(http://blog.sina.com.cn/s/blog_4c925dca0100b0nw.html) - 通过实例来学习JAVA中的工厂模式_时空网络_新浪博客

 

//下面是Person接口的工厂代码
//==============================

package project
public class PersonFactory
{
    public Person getPerson(String ethnic)
    {
        if (ethnic.equalsIgnoreCase("ch"))
        {
            return new Chinese();
        }
        else
        {
            return new American();
        }

    }
}


//下面是测试类

package project

public class FactroyTest
{
    public static void main(String[] args)
    {
        PersonFactory pf = new PersonFactory();
        Person p = null;

        //下面是通过工厂来得到Chinese类的一个实例
        p = pf.getPerson("ch");
        System.out.println(p.sayHello("网络时空"));
        System.out.println(p.sayGoodBye("网络时空"));
 
        //下面是通过工厂来得到American类的一个实例
        p = pf.getPerson("am");
        System.out.println(p.sayHello("网络时空"));
        System.out.println(p.sayGoodBye("网络时空"));
    }
}

 结果:

网络时空,你好

网络时空,下次再见

网络时空,Hello

网络时空,Good Bye

 

 

总结:
    主程序从Person接口的具体类中解耦出来,而且程序调用者无须关心person的实例化过程,角色划分清晰。主程序仅仅与工厂服务定位结合在一起,获得工厂的引用,程序将可获得所有工厂产生的实例。具体类的变化,重要接口不发生任何变化,调用者程序代码部分几乎不需要发生任何改变。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值