HeadFirst设计模式---简单工厂
2024-09-06 09:56:20
简单工厂的理解
简单工厂不是设计模式的一种,只是代码规范而且。也就是说构造一个披萨工厂出来,按不同味道生产不同的披萨。
类图
抽象披萨
public abstract class AbstractPizza {
public void prepare() {
System.out.println("prepare pizza");
}
public void bake(){
System.out.println("bake pizza");
}
public void cut(){
System.out.println("cut pizza");
}
public void box(){
System.out.println("pizza box");
}
}
实体披萨
public class CheeseAbstractPizza extends AbstractPizza {
@Override
public void prepare() {
System.out.println("prepare CheesePizza");
}
}
public class GreekAbstractPizza extends AbstractPizza {
@Override
public void prepare() {
System.out.println("prepare GreekPizza");
}
}
public class PepperoniAbstractPizza extends AbstractPizza {
@Override
public void prepare() {
System.out.println("prepare PepperoniPizza");
}
}
披萨工厂
public class SimpleFactory {
public AbstractPizza createPizza(String type) {
if ("cheesePizza".equals(type)) {
return new CheeseAbstractPizza();
} else if ("greekPizza".equals(type)) {
return new GreekAbstractPizza();
} else if ("pepperoniPizza".equals(type)) {
return new PepperoniAbstractPizza();
}
return null;
}
}
披萨商店
public class PizzaStore {
SimpleFactory simplefactory = null;
PizzaStore(SimpleFactory simplefactory){
this.simplefactory = simplefactory;
}
public void orderPizza(String type) {
AbstractPizza abstractPizza = simplefactory.createPizza(type);
abstractPizza.prepare();
abstractPizza.cut();
abstractPizza.bake();
abstractPizza.box();
}
public static void main(String[] args) {
PizzaStore store = new PizzaStore(new SimpleFactory());
store.orderPizza("cheesePizza");
}
}
运行结果
prepare CheesePizza
cut pizza
bake pizza
pizza box
总结
- 简单工厂代码简单,易理解。
- 提供一个入参,可以得到相应的对象
- 违背了开闭原则
最新文章
- crontab每秒执行URL接口
- 国外经典设计:12个漂亮的移动APP网站案例
- 【BZOJ】【1096】【ZJOI2007】仓库建设
- strncpy 和 strcpy的区别 (要抽时间重点看,未完待续)
- Java中sychronized方法与sychronized块区别
- 手把手教你mysql(十)索引
- 使用PLSQL Developer连接Oracle Database 11g Express Edition
- Ubuntu下编译SHTOOLS
- struts2(三)---struts2中的服务端数据验证框架validate
- 7.app和app后端的通讯
- 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解
- Android TextView自动换行、排列错乱问题及解决
- 【学习笔记】剖析MVVM框架,简单实现Vue数据双向绑定
- drf 生成接口文档
- 荣耀9少 gms core服务
- 数据库设计和ER模型-------之ER模型的基本概念(第二章)
- CentOS 7 之安装 Oracle 11gR2
- SQL语句之order by 、group by、having、where
- ThreadLocal的实现和使用场景
- CSS3实战-文字篇