设计模式之《工厂方法模式》
来源:互联网 发布:剑三团队插件数据导入 编辑:程序博客网 时间:2024/06/03 22:52
package com.design01.design;public interface IHuman {//每个人种的皮肤都有相应的颜色void getColor();//人会说话void talk();}
package com.design01.design;public class BlackHumanImpl implements IHuman {@Overridepublic void getColor() {System.out.println("黑种人的皮肤是黑色的...");}@Overridepublic void talk() {System.out.println("黑人说话,一般人听不懂");}}
package com.design01.design;public class YellowHumanImpl implements IHuman{@Overridepublic void getColor() {System.out.println("黄种人 皮肤是黄色的...");}@Overridepublic void talk() {// TODO Auto-generated method stubSystem.out.println("黄种人说普通话");}}
package com.design01.design;public class WhiteHumanImpl implements IHuman {@Overridepublic void getColor() {System.out.println("白种人皮肤很白");}@Overridepublic void talk() {System.out.println("白种人会说英语");}}
package com.design01.design;/** * 抽象人类建造工厂 * @author Administrator * */public abstract class AbstractHumanFactory {public abstract <T extends IHuman> T createHuman(Class<T> s);}
package com.design01.design;/** * 人类创建工厂 * @author Administrator * */public class HumanFactoryImpl extends AbstractHumanFactory{@SuppressWarnings("unchecked")@Overridepublic <T extends IHuman> T createHuman(Class<T> s) {IHuman human = null;try {human = (IHuman) Class.forName(s.getName()).newInstance();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return (T) human;}}
package com.design01.design;public class NvwaTest {public static void main(String[] args) {//声明阴阳八卦炉AbstractHumanFactory YinYangLu = new HumanFactoryImpl();System.out.println("造出的第一批是白色人种");//八卦炉造人IHuman whiteHuman = YinYangLu.createHuman(WhiteHumanImpl.class);whiteHuman.getColor();whiteHuman.talk();System.out.println("造出的第二批是黄色人种");IHuman yellowHuman = YinYangLu.createHuman(YellowHumanImpl.class);yellowHuman.getColor();yellowHuman.talk();System.out.println("造出的第三批是黑色人种");IHuman blackHuman = YinYangLu.createHuman(BlackHumanImpl.class);blackHuman.getColor();blackHuman.talk();}}
造出的第一批是白色人种白种人皮肤很白白种人会说英语黄色人种黄种人 皮肤是黄色的...黄种人说普通话黑色人种黑种人的皮肤是黑色的...黑人说话,一般人听不懂
阅读全文
0 0
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式 之 工厂方法
- 设计模式 之 工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 《设计模式》之工厂方法
- 设计模式之--工厂方法
- 记C++坑:4.虚函数表项的初始化时机
- 2017最新Pycharm激活码及官方下载地址
- C++ STL之 vector的capacity和size属性区别
- 访谈:腾讯高级交互设计师C7210的十年设计路(上)
- 项目用到的技术
- 设计模式之《工厂方法模式》
- (17)spring boot的Actuator监控使用
- java 彩票走势图算法
- mac 下修改hosts文件并创建快捷方式
- spring @RunWith
- iOS语言本地化以及自动化
- POJ 1655 树的重心(树形 DP)
- 别急,我来为你普及智能服务机器人那些事......
- CentOS 7.3下Elasticsearch 2.4.1+Kibana 4.6.6+Logstash 2.4.1及插件安装配置