工厂模式

简单工厂

违反开闭原则。对于增加新的产品,需要扩展已有代码

 

 

 


 

 

public class SimpleFactoryTest {
    public static void main(String[] args) {
        IPhone phone = PhoneStaticFactory.createPhone("13");
        if(phone != null){
            phone.product();
        }
    }
}
class PhoneStaticFactory{
    private String type;
    public static IPhone createPhone(String type){
        if(type.equals("8plus")){
            return new Iphone8plus();
        }else if(type.equals("13")){
            return  new Iphone13();
        }else{
            System.out.println("还未生产该型号手机,敬请期待");
            return null;
        }
    }
}
interface IPhone{
    public void product();
}
class Iphone8plus implements IPhone{
    @Override
    public void product() {
        System.out.println("生产手机型号为8plus");
    }
}
class Iphone13 implements IPhone{

    @Override
    public void product() {
        System.out.println("生产手机型号为13");
    }
}

工厂方法

扩展性强,产生多个工厂。支持增加任意产品

 

 

public class MethodFactoryTest {
    public static void main(String[] args) {
        IPhone iPhone = new Iphone13Factory().createPhone();
        iPhone.product();
    }
}
interface IPhone{
    public void product();
}
interface IPhoneFactory{
    public IPhone createPhone();
}
class Iphone8plus implements IPhone {
    @Override
    public void product() {
        System.out.println("生产手机型号为8plus");
    }
}
class Iphone8plusFactory implements IPhoneFactory{

    @Override
    public IPhone createPhone() {
        return new Iphone8plus();
    }
}
class Iphone13 implements IPhone {

    @Override
    public void product() {
        System.out.println("生产手机型号为13");
    }
}
class Iphone13Factory implements IPhoneFactory{

    @Override
    public IPhone createPhone() {
        return new Iphone13();
    }
}

 抽象工厂

创建一组相关或相互依赖对象的接口

 

 

 

public class AbstractFactoryTest {
    public static void main(String[] args) {
        AbstractFactory abstractFactory = new HuaWieAbstractFactory();
        IPhone phone = abstractFactory.createPhone();
        phone.product();
    }
}
interface AbstractFactory{
    public IPhone createPhone();
    public IRouter createRouter();
}
class XiaoMiAbstractFactory implements  AbstractFactory{

    @Override
    public IPhone createPhone() {
        return new XiaoMiIphone();
    }

    @Override
    public IRouter createRouter() {
        return new XiaoMiRouter();
    }
}
class HuaWieAbstractFactory implements AbstractFactory{

    @Override
    public IPhone createPhone() {
        return new HUAWEIIphone();
    }

    @Override
    public IRouter createRouter() {
        return new HuaWeiRouter();
    }
}
interface IPhone{
    public void product();
}
class XiaoMiIphone implements IPhone {
    @Override
    public void product() {
        System.out.println("小米手机");
    }
}
class HUAWEIIphone implements IPhone {

    @Override
    public void product() {
        System.out.println("华为手机");
    }
}
interface IRouter{
    public void product();
}
class XiaoMiRouter implements IRouter{
    @Override
    public void product() {
        System.out.println("小米路由器");
    }
}
class HuaWeiRouter implements IRouter{
    @Override
    public void product() {
        System.out.println("华为路由器");
    }
}

 

posted @ 2022-06-22 12:19  禁止摆烂  阅读(22)  评论(0)    收藏  举报