工厂模式
来源:互联网 发布:三维插值算法 编辑:程序博客网 时间:2024/06/05 00:07
我们在工厂对象上调用的是创建方法,而该工厂对象将生成接口的某个实现的对象。
通过这种方式,我们的代码将完全与接口的实现分离,就使得我们可以透明的将某个实现替换为另一个实现。
example 1:
package source.gohome01;interface Service {void method1();void method2();} interface ServiceFactory {Service getService();}class Implementation1 implements Service {Implementation1() {}public void method1() { System.out.println("Implementation1 method1"); }public void method2() { System.out.println("Implementation1 method2"); }}class Implementation2 implements Service {Implementation2() {}public void method1() { System.out.println("Implementation2 method1"); }public void method2() { System.out.println("Implementation2 method2"); }}class Implementation1Factory implements ServiceFactory {public Service getService() {return new Implementation1();}}class Implementation2Factory implements ServiceFactory {public Service getService() {return new Implementation2();}}public class Factories {public static void serviceConsumer(ServiceFactory fact) {Service s = fact.getService();s.method1();s.method2();}public static void main(String[] args) {serviceConsumer(new Implementation1Factory());serviceConsumer(new Implementation2Factory());}}
output:
example 2:
package source.gohome01;interface Game { boolean move(); }interface GameFactory { Game getGame(); }class Checkers implements Game {private int moves = 0;private static final int MOVES = 3;public boolean move() {System.out.println("Checkers move " + moves);return ++moves != MOVES;}}class CheckersFactory implements GameFactory {public Game getGame() { return new Checkers(); }}class Chess implements Game {private int moves = 0;private static final int MOVES = 4;public boolean move() {System.out.println("Chess move " + moves);return ++moves != MOVES;}}class ChessFactory implements GameFactory {public Game getGame() { return new Chess(); }}public class Games {public static void playGame(GameFactory factory) {Game s = factory.getGame();while(s.move());}public static void main(String[] args ) {playGame(new CheckersFactory());playGame(new ChessFactory());}}
0 0
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- nutch 无法在 eclipse下调试的问题
- C++容器vector和map的正确删除方法
- POJ3352-Road Construction
- ufldl学习笔记与编程作业:Vectorization(向量化/矢量化)
- Hibernate对象状态
- 工厂模式
- windows程序设计-第七章 BLOKOUT1 备注
- const修饰符
- 学车心得
- hdu2025 查找最大元素
- Install EGIT via eclipse marketplace
- HDU-#2066 一个人的旅行(Floyd & Dijkstra)
- zoj2412 hdu1198
- Codeforces Round #224 (Div. 2) A. Ksenia and Pan Scales