工厂方法模式

来源:互联网 发布:义乌淘宝培训多少钱 编辑:程序博客网 时间:2024/05/21 01:28

工厂方法模式:
Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation
to subclasses.
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。

例子说明
一个奔驰车抽象类Benz,两个具体的车型BenzC180 、BenzE260
一个奔驰车工厂类BenzFactory,两个具体的工厂C180Factory、E260Factory

package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:11 * Abstract:奔驰车抽象类 */public interface Benz {    public void carColor();    public void carSpeed();    public void carPrice();}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:14 * Abstract:奔驰车C180详细信息 */public class BenzC180 implements Benz {    public BenzC180(){        this.carColor();        this.carSpeed();        this.carPrice();    }    public void carColor() {        System.out.println("C180.................白色");    }    public void carSpeed() {        System.out.println("C180.................160公里每小时");    }    public void carPrice() {        System.out.println("C180.................10000元");    }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:15 * Abstract:奔驰车E260详细信息 */public class BenzE260 implements Benz {    public BenzE260(){        this.carColor();        this.carSpeed();        this.carPrice();    }    public void carColor() {        System.out.println("E260.................黑色");    }    public void carSpeed() {        System.out.println("E260.................100公里每小时");    }    public void carPrice() {        System.out.println("E260.................20000元");    }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:12 * Abstract:奔驰车工厂类 */public interface BenzFactory {    public Benz createCar();}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:13 * Abstract:奔驰C180工厂类 */public class C180Factory implements BenzFactory {    public Benz createCar() {        return new BenzC180();    }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:16 * Abstract:奔驰E260工厂类 */public class E260Factory implements BenzFactory {    public Benz createCar() {        return new BenzE260();    }}
package CreationalPattern.factory.demo;/** * Created by yangenneng on 2017-03-22 9:18 * Abstract:客户端测试 */public class Client {    public static void main(String[] args) {        BenzFactory benzFactory=new C180Factory();        benzFactory.createCar();        System.out.println("---------------------------------------");        benzFactory=new E260Factory();        benzFactory.createCar();    }}

这里写图片描述

源码下载:https://github.com/YEN-GitHub/PatternDemo/tree/master/src/CreationalPattern/factory

1 0
原创粉丝点击