Java设计模式 《工厂模式》
来源:互联网 发布:罗替戈汀贴剂淘宝 编辑:程序博客网 时间:2024/06/15 08:52
Java设计模式——工厂模式
简单工厂模式(Simple Factory Pattern):
它是为了让程序有一个更好地封装,降低程序模块之间的耦合程度。对于简单的工厂模式,其实也可以将其理解成为一个创建对象的工具类:
java code: public class SimpleFactory { public Object create(Class<?> clazz) { if (clazz.getName().equals(Plane.class.getName())) { return createPlane(); } else if (clazz.getName().equals(Broom.class.getName())) { return createBroom(); } return null; } private Broom createBroom() { return new Broom(); } private Plane createPlane() { return new Plane(); } } test code:public class FactoryTest { public static void main(String[] args) { SimpleFactory simpleFactory = new SimpleFactory(); Broom broom = (Broom) simpleFactory.create(Broom.class); broom.run(); } }
工厂方法模式(Factory Method Pattern):
工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化哪一个
java code:/*抽象工厂:*/public abstract class VehicleFactory { public abstract Moveable create(); } /*具体工厂:*/public class BroomFactory extends VehicleFactory { @Override public Moveable create() { return new Broom(); } } /*抽象产品接口:*/public interface Moveable { public void run(); } /*具体产品:*/public class Broom implements Moveable { @Override public void run() { System.out.println("Broom function"); } }
test code:VehicleFactory factory = new BroomFactory(); Moveable moveable = factory.create(); moveable.run();
抽象工厂模式(Abstract Factory Pattern):
java code:/*抽象工厂:*/public abstract class AbstractFactory { public abstract Flyable createFlyable(); public abstract Moveable createMoveable(); public abstract Writeable createWriteable(); } /*具体工厂:*/public class Factory1 extends AbstractFactory { @Override public Flyable createFlyable() { return new Aircraft(); } @Override public Moveable createMoveable() { return new Car(); } @Override public Writeable createWriteable() { return new Pen(); } } /*抽象产品接口:*/public interface Flyable { public void fly(int i); } public interface Moveable { public void move(int i); } public interface Writeable { public void write(String i); } public class Aircraft implements Flyable { @Override public void fly(int i) { System.out.println("fly"+i); } } public class Car implements Moveable { @Override public void move(int i) { System.out.println("move"+i); } } public class Pen implements Writeable { @Override public void write(String i) { System.out.println("write"+i); } } test code:public class FactoryTest { public static void main(String[] args) { AbstractFactory factory = new Factory1(); Flyable flyable = factory.createFlyable(); flyable.fly(150); Moveable moveable = factory.createMoveable(); moveable.move(10); Writeable writeable = factory.createWriteable(); writeable.write("Hello"); } }
0 0
- java设计模式----工厂模式
- java 设计模式-工厂模式
- java设计模式-工厂模式
- java设计模式------工厂模式
- JAVA设计模式-工厂模式
- Java 设计模式 工厂模式
- Java设计模式-工厂模式
- Java设计模式--工厂模式
- Java设计模式 - 工厂模式
- java设计模式--工厂模式
- Java设计模式:工厂模式
- Java设计模式--工厂模式
- java设计模式-------工厂模式
- java设计模式------工厂模式
- JAVA设计模式:工厂模式
- java设计模式:工厂模式
- java设计模式 ----工厂模式
- Java设计模式--工厂模式
- 《JSON序列化》二
- 云舒天气项目分析之架构
- 顺时针打印数组
- 剑指offer 16 合并两个排序的链表
- Leetcode #34. Search for a Range 范围搜寻 解题报告
- Java设计模式 《工厂模式》
- 应用Fast ICP进行点集或曲面配准 算法解析
- 不用加减乘除实现加法
- 每天laravel-20160701|Repository
- WPFLoading随窗体居中
- ReactiveCocoa入门教程——第二部分
- JSOI2015
- 包含min的栈
- 迭代器失效场景