JAVA_初识工厂模式
来源:互联网 发布:阿里云有香港主机 编辑:程序博客网 时间:2024/06/15 23:13
初认识工厂模式
角色分配
- 抽象工厂
- 具体工厂
- 抽象产品
- 具体产品
用抽象来解耦我们用具体的代码来看下任务分配;
- 我们先来建立一个抽象产品类,抽象产品提供产品功能,不告知具体功能使用的结果
package pattern.factory;/** * Created by jsion on 16/8/24. * 抽象产品,仿真女孩玩具俗称(Chongqi baby) */public abstract class RealGirlProduct { /** * 抽象产品的具体作用 */ public abstract void makeManHappy();}
- 抽象工厂,提供工厂制造产品线的任务,都是生产congqi baby可能只有外形不一样,但是具体的功能还是统一的,所以抽象工厂提供的生产产品的方法就是抽象产品
package pattern.factory;/** * Created by jsion on 16/8/24. * 抽象工厂,我们用泛型T来做一个泛型的限制,用于具体工厂方便返回 */public abstract class RealGirlFactory { public abstract <T extends RealGirlProduct> T createRealGirl(Class<T> clz);}
- 具体工厂,根据工厂的功能,不同的工厂最终生产的产品线都是一样的,都具有抽象工厂的功能
package pattern.factory;/** * Created by jsion on 16/8/24. * 具体工厂实现了抽象工厂中的制作方法,根据不同的需求,制作不同的产品 */public class HappyRealFactory extends RealGirlFactory { @Override public <T extends RealGirlProduct> T createRealGirl(Class<T> clz) { RealGirlProduct realGirlProduct = null; if (null != clz) { try { realGirlProduct = (RealGirlProduct) Class.forName(clz.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } } return (T) realGirlProduct; }}
- 最后就是我们的具体产品类,但是不同的客户需求不一样,但是最终的功能肯定是抽象产品的功能,所以我们看下具体产品的类
package pattern.factory;/** * Created by jsion on 16/8/24. */public class LinZhingLingReal extends RealGirlProduct { @Override public void makeManHappy() { System.out.println("林志玲款式real---->make you happy!!"); }}
package pattern.factory;/** * Created by jsion on 16/8/24. */public class FangBingBingReal extends RealGirlProduct { @Override public void makeManHappy() { System.out.println("仿真范冰冰款式--->>>make you happy!!"); }}
package pattern.factory;/** * Created by jsion on 16/8/24. */public class MaRongReal extends RealGirlProduct { @Override public void makeManHappy() { System.out.println("马蓉真人--这个碧池--make every one happy!!"); }}
从上面的可以看到不同的产品线有不同的产品,但是最终的功能都是抽象产品定义的那样!
ok到此为止我们的工厂模式各个角色都完善了,现在开始生产baby了,
public class ATPatternTest { public static void main(String[] args) throws Exception { /** * 制造几个明星娃娃,传入客户需求 */ RealGirlFactory realGirlFactory = new HappyRealFactory(); LinZhingLingReal linZhingLingReal = realGirlFactory.createRealGirl(LinZhingLingReal.class); MaRongReal maRongReal = realGirlFactory.createRealGirl(MaRongReal.class); FangBingBingReal fangBingBingReal = realGirlFactory.createRealGirl(FangBingBingReal.class); /** * 执行各位的工厂方法 */ linZhingLingReal.makeManHappy(); fangBingBingReal.makeManHappy(); maRongReal.makeManHappy(); }}
最后的结果就很明显了;不同的业务线生产不同的产品,都会具有抽象产品的功能
大家看下结果;
荆轲刺秦王_END
0 0
- JAVA_初识工厂模式
- Java_工厂模式
- 初识简单工厂模式
- 初识工厂设计模式
- 简单工厂和工厂模式初识
- 初识设计模式 chapter 04-工厂模式
- JAVA_初识异常
- 黑马程序员:初识设计模式,简单工厂模式的计算器
- 初识Java_笔记(1)
- Java_单例模式
- Java_生产者消费者模式
- java_装饰模式
- JAVA_代理模式
- JAVA_设计模式
- java_单例模式
- Java_字符串模式匹配
- 初识工厂类:
- 初识工厂三姐妹
- 手把手教你怎样提高app在Googleplay 商店的曝光率
- java笔记--Day07--new一个对象时,内存中发生了什么?
- SDUT OJ 3403数据结构实验之排序六:希尔排序
- Android 编译错误:unreachable statement
- Premake5 介绍
- JAVA_初识工厂模式
- Tomcat JDK 部署及错误问题合集
- LeetCode Mini Parser(栈操作)
- 线程基本概念 (r)
- 一句python,一句R︱python中的字符串操作、中文乱码
- 中介者模式
- HDU 1536 S-Nim(SG博弈)
- 制作Unity插件之-创建一个Window窗口
- 02第一个HTML剖析(声明字符集,utf8乱码问题)