抽象工厂模式

package abstractFactory;

//抽象工厂
public interface AbFactory {
    public Text gettextproduct();
    public Button getbuttonproduct();
}




//抽象产品
public interface Button {
    void name();
}

public interface Text {
    void name();
}

//Linux工厂的具体产品
public class LinuxButton implements Button{
    @Override
    public void name() {
        System.out.println("这是LinuxButton");
    }
}


public class LinuxText implements Text{
    @Override
    public void name() {
        System.out.println("这是LinuxText");
    }
}


//Unix工厂的具体产品


public class UnixButton implements Button{
    @Override
    public void name() {
        System.out.println("这是UnixButton");
    }
}


public class UnixText implements Text{
    @Override
    public void name() {
        System.out.println("这是UnixText");
    }
}


//Windows工厂的具体产品
public class WindowsButton implements Button{
    @Override
    public void name() {
        System.out.println("这是WindowsButton");
    }
}

public class WindowsText implements Text{
    @Override
    public void name() {
        System.out.println("这是WindowsText");
    }
}

//具体工厂
public class LinuxFactory implements AbFactory{
    @Override
    public Text gettextproduct() {
        return new LinuxText();
    }

    @Override
    public Button getbuttonproduct() {
        return new LinuxButton();
    }
}

public class UnixFactory implements AbFactory{
    @Override
    public Text gettextproduct() {
        return new UnixText();
    }

    @Override
    public Button getbuttonproduct() {
        return new UnixButton();
    }
}

public class WindowsFactory implements AbFactory{
    @Override
    public Text gettextproduct() {
        return new WindowsText();
    }

    @Override
    public Button getbuttonproduct() {
        return new WindowsButton();
    }
}


//客户端

package abstractFactory;

public class Client {
    public static void main(String[] args) {
        /**
         * 1.如果是增加一种产品的话,生成的类有 :产品本身的接口类、具体Unix产品类、具体Windows产品类、具体Linux产品类,4个
         * 2.如果是增加一个工厂的话,比如IOS,生成的类有:一个IOS工厂类,具体的IOSText、具体的IOSButton类。3个
         */
        Button button,button1,button2;
        Text text,text1,text2;
        System.out.println("---------------这个Linux工厂的两种产品-------------");
        button=new LinuxFactory().getbuttonproduct();
        button.name();
        text=new LinuxFactory().gettextproduct();
        text.name();
        System.out.println("---------------这个Unix工厂的两种产品-------------");
        button1=new UnixFactory().getbuttonproduct();
        button1.name();
        text1=new UnixFactory().gettextproduct();
        text1.name();

        System.out.println("---------------这个Windows工厂的两种产品-------------");
        button2=new WindowsFactory().getbuttonproduct();
        button2.name();
        text2=new WindowsFactory().gettextproduct();
        text2.name();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值