0
点赞
收藏
分享

微信扫一扫

设计模式=>工厂方法模式

青乌 2022-05-03 阅读 50
/**
 * @author Administrator
 * @data 2022/4/29 11:30
 */
public abstract class Factory {

    public final Product create(String owner){
        //生产产品
        Product product = createProduct(owner);
        //注册产品
        registerProduct(product);
        return product;
    }
    protected abstract Product createProduct(String owner);
    protected abstract void registerProduct(Product product);
}

/**
 * @author Administrator
 * @data 2022/4/29 11:30
 */
public class IDCard extends Product {

    private String owner;

    public IDCard(String owner) {
        System.out.println("制作" + owner + "的ID卡");
        this.owner = owner;
    }

    @Override
    public void use() {
        System.out.println("使用" + owner + "的ID卡");
    }

    public String getOwner() {
        return owner;
    }
}

/**
 * @author Administrator
 * @data 2022/4/29 11:30
 */
public class IDCardFactory extends Factory {

    private List owners = new ArrayList();

    @Override
    protected Product createProduct(String owner) {
        return new IDCard(owner);
    }

    @Override
    protected void registerProduct(Product product) {
        owners.add(((IDCard) product).getOwner());
    }

    public List getOwners() {
        return owners;
    }
}

/**
 * @author Administrator
 * @data 2022/4/29 11:29
 */
public abstract class Product {

    public abstract void use();
}

/**
 * 工厂模式:创建产品
 */
public class Main {

    public static void main(String[] args) {
        Factory factory = new IDCardFactory();
        Product card1 = factory.create("小明");
        Product card2 = factory.create("小红");
        Product card3 = factory.create("小刚");
        card1.use();
        card2.use();
        card3.use();
    }
}

举报

相关推荐

0 条评论