工厂方法模式【FACTORY METHOD PATTERN】

import FactoryMethod.Sample.framework.Factory;
import FactoryMethod.Sample.framework.Product;

public class IDCardFactory extends Factory {
    private Vector owners = new Vector();
    protected Product createProduct(String owner) {
        return new IDCard(owner);
    }
    protected void registerProduct(Product product) {
        owners.add(((IDCard)product).getOwner());
    }
    public Vector getOwners() {
        return owners;
    }
}

  public class IDCard extends Product {
     private String owner;
     IDCard(String owner) {
         System.out.println(owner + "");
         this.owner = owner;
     }
     public void use() {
         System.out.println(owner + " use ");
     }
     public String getOwner() {
         return owner;
     }
 }

     
     public abstract class Product {
     public abstract void use();
 }


  
  public abstract class Factory {
     public final Product create(String owner) {
         Product p = createProduct(owner);
         registerProduct(p);
         return p;
     }
     protected abstract Product createProduct(String owner);
     protected abstract void registerProduct(Product product);
     public abstract Vector getOwners();
 }

  public class Main {
     
     public static void main(String[] args) {
         Factory factory = new IDCardFactory();
         Product card1 = factory.create("1");
         Product card2 = factory.create("2");
         Product card3 = factory.create("3");
         System.out.println("card:"+factory.getOwners());
         card1.use();
         card2.use();
         card3.use();
     }
 }
  

你可能感兴趣的:(java)