设计模式——工厂模式(java)
来源:互联网 发布:python return{} 编辑:程序博客网 时间:2024/06/08 14:53
工厂:顾名思义,生产,加工产品的地方
工厂模式:就是在软件中提供专门用来创建对象实例的类(相当于一个加工生产对象的工厂),对所有的new操作进行封装,当要实例化对象的时候,根据传入的参数决定要实例化哪一个对象。
工厂模式包括工厂方法模式和抽象工厂模式。
抽象工厂模式是工厂方法模式的扩展。
工厂方法模式:
我们要创建一个生产不同口味冰淇淋的工厂,首先所有口味的冰淇淋类都会有一个生成冰淇淋的方法,而这个方法就可以抽象为一个接口(IceCreamInterface),让不同口味的冰淇淋类实现该接口,最后还需要一个工厂类,根据传入的参数实例化不同口味的冰淇淋对象。
1. 制作冰淇淋的方法接口
//冰淇淋接口public interface IceCreamInterface { //制作冰淇淋的方法public void createIceCream();}
2. 实现接口的不同口味的冰淇淋类//制作菠萝冰淇淋public class PineappleCream implements IceCreamInterface {@Overridepublic void createIceCream() {System.out.println("生成一个菠萝冰淇淋");}}
//制作草莓冰淇淋public class StrawberryCream implements IceCreamInterface {@Overridepublic void createIceCream() {System.out.println("生成一个草莓冰淇淋");}}
3. 冰淇淋工厂类,根据传入的字符串实例化冰淇淋对象
//生成冰淇淋的工厂public class IceCreamFactory {//根据传入的name来判断需要创建哪个对象public IceCreamInterface getIceCream(String name){if("strawberry".equals(name)){return new StrawberryCream();}else if("pineapple".equals(name)){return new PineappleCream();}else{return null;}}}
4. 调用工厂类实例化对象IceCreamFactory factory1=new IceCreamFactory();//向上转型IceCreamInterface iceCream1=factory1.getIceCream("strawberry");if(iceCream1!=null){iceCream1.createIceCream();}iceCream1=factory1.getIceCream("pineapple");if(iceCream1!=null){iceCream1.createIceCream();}
抽象工厂模式
我们要生产两种类别的冰淇淋,分别是蛋卷冰淇淋和纸杯冰淇淋,同时蛋卷冰淇淋还分手工和机器生产的两种,纸杯同样也分手工和机器的两种,于是我们要生产四种产品类型的冰淇淋(四个生成不同对象的类)。要建立两个工厂,一个是手工工厂用于生产手工冰淇淋(实例化手工产品的对象),一个是机器工厂用于生产机器冰淇淋(实例化机器产品的对象)。
1. 抽象生产纸杯冰淇淋方法为CupCream接口
//纸杯冰淇淋接口public interface CupCream {public void createCupCream();}
2. 实现接口的手工纸杯冰淇淋类和机器纸杯冰淇淋类//手工纸杯冰淇淋public class ManualCupCream implements CupCream{@Overridepublic void createCupCream() {System.out.println("生成一个手工纸杯冰淇淋");}}
//机器纸杯冰淇淋public class MachineCupCream implements CupCream{@Overridepublic void createCupCream() {System.out.println("生成一个机器纸杯冰淇淋");}}
3. 抽象生产蛋卷冰淇淋方法为EggCream接口//蛋卷冰淇淋接口public interface EggCream {public void createEggCream();}
4. 实现接口的手工蛋卷冰淇淋类和机器蛋卷冰淇淋类//手工蛋卷冰淇淋public class ManualEggCream implements EggCream {@Overridepublic void createEggCream() {System.out.println("生成一个手工蛋卷冰淇淋");}}
//机器蛋卷冰淇淋public class MachineEggCream implements EggCream {@Overridepublic void createEggCream() {// TODO Auto-generated method stubSystem.out.println("生成一个机器蛋卷冰淇淋");}}
5. 定义包装工厂接口,包括得到蛋卷冰淇淋和纸杯冰淇淋的抽象方法
//包装工厂接口public interface WrappingFactroy {public EggCream getEggCream();public CupCream getCupCream();}
6. 实现包装工厂接口的手工工厂和机器工厂
//手工生产工厂public class ManualFactory implements WrappingFactroy{@Overridepublic EggCream getEggCream() {return new ManualEggCream();}@Overridepublic CupCream getCupCream() {return new ManualCupCream();}}
//机器生产工厂public class MachineFactory implements WrappingFactroy{@Overridepublic EggCream getEggCream() {return new MachineEggCream();}@Overridepublic CupCream getCupCream() {return new MachineCupCream();}}
7. 调用工厂类实例化对象
WrappingFactroy wrapping=new ManualFactory() ;EggCream eggCream=wrapping.getEggCream();eggCream.createEggCream();CupCream cupCream=wrapping.getCupCream();cupCream.createCupCream();wrapping=new MachineFactory();eggCream=wrapping.getEggCream();eggCream.createEggCream();cupCream=wrapping.getCupCream();cupCream.createCupCream();
阅读全文
0 0
- Java—设计模式(工厂模式)
- Java设计模式—工厂设计模式
- Java设计模式—工厂方法模式&抽象工厂模式
- Java设计模式—工厂方法模式&抽象工厂模式
- Java设计模式——工厂模式(简单工厂、工厂方法 、抽象工厂 )
- JAVA设计模式——工厂模式
- java设计模式——工厂模式
- java设计模式——工厂模式
- Java设计模式——工厂模式
- Java设计模式——工厂模式
- java设计模式——工厂模式
- Java设计模式——工厂模式
- java设计模式——工厂模式
- java设计模式——工厂模式
- java设计模式——工厂模式
- java设计模式——工厂模式
- Java设计模式——工厂模式
- Java设计模式——工厂模式
- C++笔记 第一章1--小概念
- Java中集合(三)Stack
- 一些防止java代码被反编译的方法
- 第四周项目五猴子选大王
- 融云头像昵称设置
- 设计模式——工厂模式(java)
- 蓝桥杯训练——最大连续子系列和
- Selenium之鼠标和键盘操作及扩展
- Codeforces 638C Road Improvement【思维+Dfs】
- OO’s Sequence
- javaSE_8系列博客——重要的基础Java类——Exceptions(异常处理机制)--4--总结
- Android开发之Hybrid开发
- spring集成kafka实现producer和consumer
- js原型的通俗理解