美文网首页
设计模式-工厂模式

设计模式-工厂模式

作者: 灵台悠步 | 来源:发表于2021-06-09 13:17 被阅读0次

1、简单工厂模式

package com.jdwa.factory.simple;

public interface IProduct {
    void use();
}

package com.jdwa.factory.simple;

public class Phone implements IProduct {
    @Override
    public void use() {
        System.out.println("通话");
    }
}

package com.jdwa.factory.simple;

public class Fridge implements IProduct {
    @Override
    public void use() {
        System.out.println("保鲜食物");
    }
}
package com.jdwa.factory.simple;

public class ProductFactory {
    public IProduct create(Class<? extends IProduct> clazz){
        if (clazz != null) {
            try {
                return clazz.newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}

package com.jdwa.factory.simple;

public class Client {
    public static void main(String[] args) {
        ProductFactory factory = new ProductFactory();
        IProduct fridge = factory.create(Fridge.class);
        fridge.use();
    }
}

2、工厂方法模式

package com.jdwa.factory.method;

public interface IProduct {
    void use();
}

package com.jdwa.factory.method;

public class Fridge implements IProduct {
    @Override
    public void use() {
        System.out.println("工厂方法-保鲜食物");
    }
}

package com.jdwa.factory.method;

public class Phone implements IProduct {
    @Override
    public void use() {
        System.out.println("工厂方法-通话");
    }
}

package com.jdwa.factory.method;

public interface IProductFactory {
    IProduct create();
}

package com.jdwa.factory.method;

public class FridgeFactory implements IProductFactory {
    @Override
    public IProduct create() {
        return new Fridge();
    }
}

package com.jdwa.factory.method;

public class PhoneFactory implements IProductFactory {
    @Override
    public IProduct create() {
        return new Phone();
    }
}

package com.jdwa.factory.method;

public class Client {
    public static void main(String[] args) {
        IProductFactory factory = new PhoneFactory();
        IProduct ph = factory.create();
        ph.use();

        factory = new FridgeFactory();
        IProduct fridge = factory.create();
        fridge.use();

    }
}

3、抽象工厂模式

package com.jdwa.factory.abstractfactory;

public interface IComputer {
    void code();
}

package com.jdwa.factory.abstractfactory;

public interface IPhone {
    void call();
}

package com.jdwa.factory.abstractfactory;

public class AppleComputer implements IComputer{
    @Override
    public void code() {
        System.out.println("use apple computer to code ==");
    }
}

package com.jdwa.factory.abstractfactory;

public class HuaWeiComputer implements IComputer {
    @Override
    public void code() {
        System.out.println("use huawei computer to code===");
    }
}

package com.jdwa.factory.abstractfactory;

public class ApplePhone implements IPhone {
    @Override
    public void call() {
        System.out.println("use apple phone to call someone ===");
    }
}

package com.jdwa.factory.abstractfactory;

public class HuaWeiPhone implements IPhone{
    @Override
    public void call() {
        System.out.println("use huawei  phone to call someone ===");
    }
}

package com.jdwa.factory.abstractfactory;

public abstract class ProductFactory {
    public void init(){
        System.out.println("init============");
    }

    protected abstract IComputer createCom();

    protected abstract IPhone createPh();

}

package com.jdwa.factory.abstractfactory;

public class AppleFactory extends ProductFactory {
    @Override
    protected IComputer createCom() {
        return new AppleComputer();
    }

    @Override
    protected IPhone createPh() {
        return new ApplePhone();
    }
}

package com.jdwa.factory.abstractfactory;

public class HuaWeiFactory extends ProductFactory {
    @Override
    protected IComputer createCom() {
        return new HuaWeiComputer();
    }

    @Override
    protected IPhone createPh() {
        return new HuaWeiPhone();
    }
}

package com.jdwa.factory.abstractfactory;

public class Client {
    public static void main(String[] args) {
        HuaWeiFactory huaWeiFactory = new HuaWeiFactory();
        huaWeiFactory.createCom().code();
        huaWeiFactory.createPh().call();

        AppleFactory appleFactory = new AppleFactory();
        appleFactory.createCom().code();
        appleFactory.createPh().call();
    }
}

相关文章

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

网友评论

      本文标题:设计模式-工厂模式

      本文链接:https://www.haomeiwen.com/subject/avdpjltx.html