GOF设计模式之工厂模式
2016-10-21 16:56
190 查看
工厂模式实现了创建者与调用者分离。
工厂模式分为简单工厂模式,工厂方法模式以及抽象工厂模式。
简单工厂模式:
简单工厂模式较为简单,但是当增加新的产品的时候会修改已有的代码而不是直接增加类。
`
工厂方法:
工厂方法对于每一种产品都有自己的工厂,要增加新的产品的时候,只需要增加相应的类与工厂即可。
抽象工厂:
工厂模式分为简单工厂模式,工厂方法模式以及抽象工厂模式。
简单工厂模式:
car接口: public interface Car { void run(); }
//对car的继承 public class Benz implements Car{ @Override public void run() { System.out.println("Benz能跑"); } }
//对car的继承 public class BMW implements Car { @Override public void run() { System.out.println("BMWe能跑"); } }
//简单工厂 public class CarFactory { public static Car creatCar(String car) { if("宝马".equals(car)) { return new BMW(); } else if("奔驰".equals(car)) { return new Benz(); } else { return null; } } }
//测试类 public class Client { public static void main(String[] args) { Car c1 = CarFactory.creatCar("奔驰"); Car c2 = CarFactory.creatCar("宝马"); } }
简单工厂模式较为简单,但是当增加新的产品的时候会修改已有的代码而不是直接增加类。
`
工厂方法:
//car接口 public interface Car { void run(); }
//car工厂 public interface CarFactory { Car creatCar(); }
//具体的car类 public class Benz implements Car{ @Override public void run() { System.out.println("Benz能跑"); } }
//相应的工厂 public class BenzFactory implements CarFactory{ @Override public Car creatCar() { return new Benz(); } }
public class BMW implements Car { @Override public void run() { System.out.println("BMW能跑"); } }
public class BMWFactory implements CarFactory{ @Override public Car creatCar() { return new BMW(); } }
//相应的测试类 public class Client { public static void main(String[] args) { Car c = new BenzFactory().creatCar(); c.run(); Car c2 = new BMWFactory().creatCar(); c2.run(); } }
工厂方法对于每一种产品都有自己的工厂,要增加新的产品的时候,只需要增加相应的类与工厂即可。
抽象工厂:
//发动机类 public interface Engine { void start(); } class LuxuryEngine implements Engine{ @Override public void start() { System.out.println("启动快"); } } class LowEngine implements Engine{ @Override public void start() { 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 Tyre { void wear(); } class LuxuryTyre implements Tyre{ @Override public void wear() { System.out.println("不易磨顺"); } } class LowTyre implements Tyre{ @Override public void wear() { System.out.println("易磨顺"); } }
//car工厂 public interface CarFactory { Engine creatEngine(); Seat creatSeat(); Tyre creatTyre(); }
//高端工厂 public class LuxuryFactory implements CarFactory { @Override public Engine creatEngine() { return new LuxuryEngine(); } @Override public Seat creatSeat() { return new LuxurySeat(); } @Override public Tyre creatTyre() { return new LuxuryTyre(); } }
//低端工厂 public class LowFactory implements CarFactory{ @Override public Engine creatEngine() { return new LowEngine(); } @Override public Seat creatSeat() { return new LowSeat(); } @Override public Tyre creatTyre() { return new LowTyre(); } }
相关文章推荐
- C#简单工厂模式——初遇GoF设计模式
- GoF 23个经典的设计模式03--创建模式之工厂方法(未完代续)
- 【GOF23设计模式】_工厂模式JAVA229-231
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于类的工厂
- 学习设计模式第二十七 - GoF之外简单工厂模式
- Gof23种设计模式+简单工厂设计模式总结(一)
- 工厂方法模式GoF23种设计模式之创建型模式之工厂方法模式
- 【GOF23设计模式】--工厂模式
- 设计模式之创建型模式——简单工厂(又称为静态工厂不属于GOF23种设计模式以内)
- GOF设计模式--简单工厂模式
- 非23种GOF设计模式之简单工厂模式
- GOF设计模式之旅------工厂模式
- 【GOF23设计模式】工厂模式
- 关于工厂和dao(j2ee设计模式和GOF的设计模式)
- GOF业务场景的设计模式-----工厂模式
- Gof23种设计模式+简单工厂设计模式总结(二)
- Java设计模式:Factory(工厂模式)
- 设计模式[2]-旧话重提之-各种工厂模式
- 设计模式与GoF
- Dot Net 设计模式—简单工厂