UIT

创建类——工厂模式

2019-05-28  本文已影响1人  Jason_Sam
Factory.png

工厂模式

  1. 工厂模式
  2. 抽象工厂模式

工厂方法模式

工厂方法模式实践

产品类
    publi abstract class Produce {
        public abstract void dosomething();
    }
    
    public class ConcreteProduceA extends Produce {
        @Override
        public void dosomething() {
            System.out.println("I am ProduceA!");
        }
    }
    
    public class ConcreteProduceB extends Produce {
        @Override
        public void dosomething() {
            System.out.println("I am ProduceB!");
        }
    }
工厂类
    public abstract class Creator {
        public abstract <T extends Produce>T createProduce(Class<T> c);
    }
    
    public class ConcreteCreator extends Creator {
        @Override
        public <T extends Produce>T createProduce(Class<T> c) {
            Produce produce = null;
            try {
                produce = (Produce)Class.forName(c.getName()).newInstance();
            } catch (Exception e) {
                // TODO: handle exception
            }
            return (T)produce;
        }
    }
客户端
public class client {
    public static void main(String[] args) {
        Creator creator = new ConcreteCreator();
        Produce A = creator.createProduce(ConcreteProduceA.class);
        A.dosomething();
        Produce B = creator.createProduce(ConcreteProduceB.class);
        B.dosomething();
    }
}

抽象工厂模式

抽象工厂模式实践

产品类
    public abstract class Produce1 {
        public abstract void dosomething();
    }
    
    public class ConcreteProduceA1 extends Produce1 {
        @Override
        public void dosomething() {
            System.out.println("I am ProduceA1!");
        }
    }
    
    public class ConcreteProduceB1 extends Produce1 {
        @Override
        public void dosomething() {
            System.out.println("I am ProduceB1!");
        }
    }
    
    public abstract class Produce2 {
        public abstract void dosomething();
    }
    
    public class ConcreteProduceA2 extends Produce2 {
        @Override
        public void dosomething() {
            System.out.println("I am ProduceA2!");
        }
    }
    
    public class ConcreteProduceB2 extends Produce2 {
        @Override
        public void dosomething() {
            System.out.println("I am ProduceB2!");
        }
    }
工厂类
    public abstract class Creator {
        public abstract Produce1 createProduce1();
        public abstract Produce2 createProduce2();
    }
    
    public class ConcreteCreatorA extends Creator {
        @Override
        public Produce1 createProduce1(){
            return new ConcreteProduceA1();
        }
        
        @Override
        public Produce2 createProduce2() {
            return new ConcreteProduceA2();
        }
    }
    
    public class ConcreteCreatorB extends Creator {
        @Override
        public Produce1 createProduce1(){
            return new ConcreteProduceB1();
        }
        
        @Override
        public Produce2 createProduce2() {
            return new ConcreteProduceB2();
        }
    }
客户端
public class client {
    public static void main(String[] args) {
        Creator creatorA = new ConcreteCreatorA();
        Creator creatorB = new ConcreteCreatorB();
        Produce1 A1 = creatorA.createProduce1();
        A1.dosomething();
        Produce2 A2 = creatorA.createProduce2();
        A2.dosomething();
        Produce1 B1 = creatorB.createProduce1();
        B1.dosomething();
        Produce2 B2 = creatorB.createProduce2();
        B2.dosomething();
    }
}

源代码

上一篇 下一篇

猜你喜欢

热点阅读