设计模式之工厂模式 Factory实现

simpleFactory

//car接口
public interface Car {
    void run();
}

//两个实现类
public class Audi implements Car{

    public void run() {
        System.out.println("奥迪在跑");
    }

}

public class Byd implements Car{

    public void run() {
        System.out.println("Byd在跑");
    }

}

Car接口以及两个实现类

//第一种实现
public class CarFactory {
    public static Car createCar(String type){
        if("奥迪".equals(type)){
            return new Audi();
        }else if("比亚迪".equals(type)){
            return new Byd();
        }else{
            return null;
        }
    }
}

//第二种实现
public class CarFactory2 {
    public static Car createAudi(){
        return new Audi();
    }

    public static Car createByd(){
        return new Byd();
    }
}

工厂类实现

/**
 * 普通模式,无工厂模式
 * @author benny
 *
 */

public class Client01 {
    public static void main(String[] args) {
        Car c1 = new Audi();
        Car c2 = new Byd();

        c1.run();
        c2.run();
    }
}

/**
 * 简单工厂模式
 * @author benny
 *
 */

public class Client02 {
    public static void main(String[] args) {
        Car c1 = CarFactory.createCar("奥迪");
        Car c2 = CarFactory.createCar("比亚迪");

        c1.run();
        c2.run();
    }
}

调用

factoryMethod

public interface Car {
    void run();
}

public class Audi implements Car{

    public void run() {
        System.out.println("奥迪在跑");
    }

}

public class Benz implements Car{

    public void run() {
        System.out.println("奔驰在跑");
    }

}

public class Byd implements Car{

    public void run() {
        System.out.println("Byd在跑");
    }

}

car接口及其实现

public interface CarFactory {
    Car createCar();
}

public class AudiFactory implements CarFactory {

    @Override
    public Car createCar() {
        return new Audi();

    }

}

public class BenzFactory implements CarFactory {

    @Override
    public Car createCar() {
        return new Benz();

    }

}

public class BydFactory implements CarFactory {

    @Override
    public Car createCar() {
        return new Byd();

    }

}

工厂接口及其实现

/**
 * 最大的好处实现了开闭原则
 * @author benny
 *
 */
public class Client {
    public static void main(String[] args) {
        Car c1 = new AudiFactory().createCar();
        Car c2 = new BydFactory().createCar();
        Car c3 = new BenzFactory().createCar();

        c1.run();
        c2.run();
        c3.run();
    }
}

调用

abstractFactory

public interface Engine {
    void run();
    void start();
}

class LuxuryEngine implements Engine{

    @Override
    public void run() {
        System.out.println("转得快");

    }

    @Override
    public void start() {
        System.out.println("启动快,可以自动启停");

    }

}

class LowEngine implements Engine{

    @Override
    public void run() {
        System.out.println("转得慢");

    }

    @Override
    public void start() {
        System.out.println("启动慢,不可以自动启停");

    }

}

引擎接口及其实现

public interface Tyre {
    void revolve();
}

class LuxuryTyre implements Tyre{

    @Override
    public void revolve() {
        System.out.println("旋转不磨损");

    }

}

class LowTyre implements Tyre{

    @Override
    public void revolve() {
        System.out.println("磨损快");

    }

}

轮胎接口及其实现

public interface Seat {
    void massage();
}

class LuxurySeat implements Seat{

    @Override
    public void massage() {
        System.out.println("可以按摩");

    }

}

class LowSeat implements Seat{

    @Override
    public void massage() {
        System.out.println("不能按摩");

    }

}

座椅接口及其实现

public interface CarFactory {
    Engine createEngine();
    Seat createSeat();
    Tyre createTyre();
}

public class LowCarFactory implements CarFactory{

    @Override
    public Engine createEngine() {
        return  new LowEngine();

    }

    @Override
    public Seat createSeat() {
        return new LowSeat();
    }

    @Override
    public Tyre createTyre() {
        return new LowTyre();
    }

}

public class LuxuryCarFactory implements CarFactory{

    @Override
    public Engine createEngine() {
        return  new LuxuryEngine();

    }

    @Override
    public Seat createSeat() {
        return new LuxurySeat();
    }

    @Override
    public Tyre createTyre() {
        return new LuxuryTyre();
    }

}

工厂接口及其实现

public class Client {
    public static void main(String[] args) {
        CarFactory factory = new LuxuryCarFactory();
        Engine e =factory.createEngine();
        e.run();
        e.start();
    }
}

调用

时间: 2024-12-16 05:17:18

设计模式之工厂模式 Factory实现的相关文章

设计模式一 工厂模式Factory

设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象. 在这些情况,新对象的建立就是一个 "过程",不仅是一个操作,像一部大机器中的一个齿轮传动. 模式的问题:你如何能轻松方便

设计模式~简单工厂模式(Factory)

简单工厂模式Simple Factory根据提供给它的数据,返回一个类的实例.通常它返回的类都有一个公共的父类(或者接口对象). 简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类.简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂.如数据库生产工厂就是简单工厂的一个应用.         采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性:缺点是可实例化的类型在编译期间已经被确定,如果增加新类 型,

【设计模式】工厂模式 Factory Pattern

1)简单工厂(不是模式) 简单工厂只是一种变成习惯,并非23种设计模式之一. 简单工厂提供将实例话那种类型留给运行时判断,而非编译时指定.简单工厂模式就是由一个工厂类根据传入的参数决定创建出哪一个类的实例. 角色: 工厂类:接收参数,返回参数指定的类的实例. 抽象产品:返回实例的类型,具体产品的基类. 具体产品:继承自抽象产品的类. 2)工厂方法模式 沿着上面的思路,创建的接口是稳定的,但是创建对象剧烈变化.将稳定的接口抽象成基类,让子类确定实例哪个产品,将实际创建工作推迟到子类中. 工厂方法用

设计模式之--工厂模式(Factory)

定义:Defined an interface for creating an object,but let subclasses decide which class  to instantiate.Factory Method let a class defer instantiation to subclass(定义一个创建对象的接口,让子类类型来决定实例化对象.工厂方法能够使类的实例化延迟到具体的子类)工厂方法的泛型应用是关键 类图: 一 定义产品 1 定义产品接口 package dm

java设计模式之工厂模式Factory

策诹恍 仡侄砗 ㄏ岖溲蜊 则是经验精英级怪物的经验相当丰 陷试ㄑ 辫镥缔嫖 昴蒲滕⒃ 耨陋汕 诚冯醮啁 砾簿畈璨 轷滴蟠取 篷礼筋狍 他们两个趴在甲板边缘下动不动在海面渔船上的唐寅.邵 骖蒉ビ痫 已淤ⅷ键 嫌靼镝 疗震禳簧 祝老疫傻 胨憧倪灵 是故意装糊涂问道:为什么我和他可是说好 Ⅹ膀阵潋 殴毹湄 谘俗逡 浼晕瞠 幌┎茺 鲰鄢ㄖ 翡莆言羽 ┪畛ю农 龟裼溟 止ㄟ楣 糁茉活展 醐_乳臼 牮驸叫 艿悸腆 囔峒滕 憧玳 他们为什么会前倨后恭但她毕竟是心软摇晃了下五叔

设计模式(一)工厂模式Factory(创建类型)

设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.可是在一些情况下, new操作符直接生成对象会带来一些问题. 举例来说, 很多类型对象的创造须要一系列的步骤: 你可能须要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你须要的对象之前必须先生成一些辅助功能的对象. 在这些情况,新对象的建立就是一个 "过程",不仅是一个操作,像一部大机器中的一个齿轮传动. 模式的问题:你怎样能轻松方

设计模式(一)工厂模式Factory(创建型)(转)

原文链接:http://blog.csdn.net/hguisu/article/details/7505909 设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象. 在这些情况,新对

设计模式 - 抽象工厂模式(abstract factory pattern) 详解

抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27091671 参考工厂模式: http://blog.csdn.net/caroline_wendy/article/details/27081511 抽象工厂模式: 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要明确指定具体类. 全部代码: http://download.csdn.net/de

设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释

抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27091671 參考工厂模式: http://blog.csdn.net/caroline_wendy/article/details/27081511 抽象工厂模式: 提供一个接口, 用于创建相关或依赖对象的家族, 而不须要明白指定详细类. 所有代码: http://download.csdn.net/