抽象工厂模式(三)

先来看一下图


分别来看一下相应的代码,抽象工厂类:

package com.fanyafeng.abstractfactory.abfactory;

import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhone;
import com.fanyafeng.abstractfactory.vrfactory.VR;

/**
 * Created by fanyafeng on 16/7/1.
 */
public abstract class AbstractFactory {
    public abstract MobilePhone getMobilPhone(String phone);

    public abstract VR getVR(String vr);
}

抽象工厂建造者

package com.fanyafeng.abstractfactory.abfactory;

import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhoneFactory;
import com.fanyafeng.abstractfactory.vrfactory.VRFactory;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class FactoryProducter {
    public static AbstractFactory getFactory(String factroy) {
        switch (factroy) {
            case "MobilePhoneFactory":
                return new MobilePhoneFactory();
            case "VRFactory":
                return new VRFactory();
            default:
                return null;
        }
    }
}
再分别看mobiel和vr的接口声明

package com.fanyafeng.abstractfactory.mobilephonefactory;

/**
 * Created by fanyafeng on 16/7/1.
 */
public interface MobilePhone {
    public void create();
}

package com.fanyafeng.abstractfactory.vrfactory;

/**
 * Created by fanyafeng on 16/7/1.
 */
public interface VR {
    public void research();
}

这两个的工厂

package com.fanyafeng.abstractfactory.mobilephonefactory;

import com.fanyafeng.abstractfactory.abfactory.AbstractFactory;
import com.fanyafeng.abstractfactory.mobilephone.HTC;
import com.fanyafeng.abstractfactory.mobilephone.Iphone;
import com.fanyafeng.abstractfactory.mobilephone.Mi;
import com.fanyafeng.abstractfactory.vrfactory.VR;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class MobilePhoneFactory extends AbstractFactory{
    @Override
    public MobilePhone getMobilPhone(String phone) {
        switch (phone){
            case "HTC":
                return new HTC();
            case "Iphone":
                return new Iphone();
            case "Mi":
                return new Mi();
            default:
                return null;
        }
    }

    @Override
    public VR getVR(String vr) {
        return null;
    }
}


package com.fanyafeng.abstractfactory.vrfactory;

import com.fanyafeng.abstractfactory.abfactory.AbstractFactory;
import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhone;
import com.fanyafeng.abstractfactory.vr.DaPeng;
import com.fanyafeng.abstractfactory.vr.HeadSet;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class VRFactory extends AbstractFactory{
    @Override
    public MobilePhone getMobilPhone(String phone) {
        return null;
    }

    @Override
    public VR getVR(String vr) {
        switch (vr){
            case "DaPeng":
                return new DaPeng();
            case "HeadSet":
                return new  HeadSet();
            default:
                return null;
        }
    }
}

剩下的是具体的建造对象

package com.fanyafeng.abstractfactory.mobilephone;

import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhone;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class HTC implements MobilePhone {
    @Override
    public void create() {
        System.out.println("HTC制造的手机");
    }
}


package com.fanyafeng.abstractfactory.mobilephone;

import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhone;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class Iphone implements MobilePhone {
    @Override
    public void create() {
        System.out.println("苹果制造的手机");
    }
}


package com.fanyafeng.abstractfactory.mobilephone;

import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhone;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class Mi implements MobilePhone{
    @Override
    public void create() {
        System.out.println("小米制造的手机");
    }
}



package com.fanyafeng.abstractfactory.vr;

import com.fanyafeng.abstractfactory.vrfactory.VR;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class DaPeng implements VR{
    @Override
    public void research() {
        System.out.println("大鹏研究的VR产品");
    }
}

package com.fanyafeng.abstractfactory.vr;

import com.fanyafeng.abstractfactory.vrfactory.VR;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class HeadSet implements VR {
    @Override
    public void research() {
        System.out.println("HTC研究的VR产品");
    }
}
main的测试

package com.fanyafeng.abstractfactory;

import com.fanyafeng.abstractfactory.abfactory.AbstractFactory;
import com.fanyafeng.abstractfactory.abfactory.FactoryProducter;
import com.fanyafeng.abstractfactory.mobilephonefactory.MobilePhone;
import com.fanyafeng.abstractfactory.vrfactory.VR;
import com.fanyafeng.abstractfactory.vrfactory.VRFactory;

/**
 * Created by fanyafeng on 16/7/1.
 */
public class Main {
    public static void main(String[] args) {
        AbstractFactory vrFactory = FactoryProducter.getFactory("VRFactory");
        VR vr = vrFactory.getVR("DaPeng");
        vr.research();

        AbstractFactory mobilePhoneFactroy=FactoryProducter.getFactory("MobilePhoneFactory");
        MobilePhone mobilePhone=mobilePhoneFactroy.getMobilPhone("Mi");
        mobilePhone.create();
    }
}

总体来说感觉这个模式好抽象,没有找到挺好的描述语言,大家也可以根据模式的六原则进行对应






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值