java 工厂方法模式与抽象工厂模式
2017-03-30 15:55
197 查看
1.工厂方法模式
定义:一个创建对象的接口,但由子类决定实现要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
例子:披萨店里点披萨;有多个店,每个点有不同披萨。
1.1店抽象类
1.2 具体店子类
1.3 pizza 抽象类
1.4 pizza子类
1.5测试
1.8 总结
将具体的实例化那个pizza交给了pizzaStore的实现pizzaStoreCG和pizzaStoreNY这个工厂,将可变部分从代码中分离出来,每个店增加
pizza种类直接改pizzaStore的实现pizzaStoreCG和pizzaStoreNY即可。
2抽象工厂模式
定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
代码见 git
抽象工厂内常常有简单工厂的实现。
定义:一个创建对象的接口,但由子类决定实现要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
例子:披萨店里点披萨;有多个店,每个点有不同披萨。
1.1店抽象类
package factory; /** * Created by zjy on 2017/3/30. */ public abstract class PizzaStore { public Pizza orderPizza(int s){ return creatPizza(s ); } protected abstract Pizza creatPizza(int pizzaName); }
1.2 具体店子类
package factory; /** * Created by zjy on 2017/3/30. */ public class PizzaStoreCG extends PizzaStore{ public static int PizzaCGCheese=0; public static int PizzaCGDefault=1; public PizzaStoreCG() { } @Override public Pizza creatPizza(int s) { switch (s){ case 0:return new PizzaNYCheese(); case 1:return new PizzaNYDefault(); default:return new PizzaNYDefault(); } } }
package factory; /** * Created by zjy on 2017/3/30. */ public class PizzaStoreNY extends PizzaStore { public static int PizzaNYCheese=0; public static int PizzaNYDefault=1; public PizzaStoreNY() { } @Override public Pizza creatPizza(int s) { switch (s){ case 0:return new PizzaNYCheese(); case 1:return new PizzaNYDefault(); default:return new PizzaNYDefault(); } } }
1.3 pizza 抽象类
package factory; import java.util.ArrayList; /** * Created by zjy on 2017/3/30. */ public abstract class Pizza { String name; String dough; ArrayList<String> toping = new ArrayList<String>(); public abstract void prapare(); public String getName() { return name; } }
1.4 pizza子类
package factory; /** * Created by zjy on 2017/3/30. */ public class PizzaCGCheese extends Pizza { @Override public void prapare() { System.out.println("prepare"+getClass().getName()); } }
1.5测试
package factory; /** * Created by zjy on 2017/3/30. */ public class testfactory { public static void main(String[] args){ PizzaStore pizzaStore = new PizzaStoreNY(); Pizza pizzaCheese=pizzaStore.orderPizza(PizzaStoreNY.PizzaNYCheese); pizzaCheese.prapare(); Pizza pizzaDefault=pizzaStore.orderPizza(PizzaStoreNY.PizzaNYDefault); pizzaDefault.prapare(); new PizzaStoreCG().orderPizza(PizzaStoreCG.PizzaCGCheese).prapare(); } }
1.8 总结
将具体的实例化那个pizza交给了pizzaStore的实现pizzaStoreCG和pizzaStoreNY这个工厂,将可变部分从代码中分离出来,每个店增加
pizza种类直接改pizzaStore的实现pizzaStoreCG和pizzaStoreNY即可。
2抽象工厂模式
定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
代码见 git
抽象工厂内常常有简单工厂的实现。
相关文章推荐
- Java设计模式编程中的工厂方法模式和抽象工厂模式
- JAVA之工厂模式(静态工厂模式(简单工厂模式)、工厂方法模式、抽象工厂模式)
- JAVA设计模式☞☞工厂方法模式和抽象工厂模式区别
- java 工厂模式,工厂方法模式,抽象工厂模式 详解
- JAVA设计模式 - 简单工厂模式、工厂方法模式、抽象工厂模式
- Java设计模式-工厂方法模式和抽象工厂模式
- java23种设计模式-----简单工厂模式、工厂方法模式、抽象工厂模式的区别
- Java设计模式(2)创建型:工厂模式(工厂方法模式与抽象工厂模式)
- java va中工厂模式( 静态工厂模式、工厂方法模式、抽象工厂模式)的介绍以及简单例子
- java学习之工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 6.java设计模式(读书笔记)简单工厂模式、工厂方法模式、抽象工厂模式
- 常用Java设计模式系列(5)- 简单工厂、工厂方法模式和抽象工厂模式
- java设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- 工厂模式(工厂方法模式,抽象工厂模式) Java
- java设计模式之工厂方法模式和抽象工厂模式
- Java 可复用的面向对象的设计模式之 工厂模式Factory详解 :简单工厂模式 工厂方法模式 抽象工厂模式
- Java设计模式(三):工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- JAVA设计模式——工厂方法模式和抽象工厂模式
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- 抽象工厂模式与工厂方法模式区别