JAVA设计模式温故篇-工厂模式
来源:互联网 发布:软件界面设计教程 编辑:程序博客网 时间:2024/06/01 09:13
工厂模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
举个很简单的例子,中国生产了一批布,可以制作成衣服和裤子,并且在中国和美国都有工厂,可以这样定义类
定义一个抽象工厂类,用于定义方法,但具体的操作由各个分工厂自己操作
package com.hpg.demo.cloth;public abstract class Factory {public Cloth orderCloth(String JacketOrTrouse) {Cloth cloth;cloth = createCloth(JacketOrTrouse);cloth.make();cloth.labeling();return cloth;}public abstract Cloth createCloth(String JacketOrTrouse);}
定义一个Cloth类,Jacket和Trouse都继承这个类
package com.hpg.demo.cloth;public abstract class Cloth {/** * 衣服还是裤子 */String typeName ;/** * 制作 */void make(){System.out.println("simple make");}/** * 贴标签 */void labeling(){System.out.println("simple labeling");}}
定义AmericaFactory类
package com.hpg.demo.cloth;public class AmericaFactory extends Factory {@Overridepublic Cloth createCloth(String JacketOrTrouse) {if (JacketOrTrouse.equals("jacket")) {return new Jacket();} else if (JacketOrTrouse.equals("trouse")) {return new Trouse();} else {return null;}}}
定义ChinaFactory类
package com.hpg.demo.cloth;public class ChinaFactory extends Factory{@Overridepublic Cloth createCloth(String JacketOrTrouse) {if (JacketOrTrouse.equals("jacket")) {return new Jacket();} else if (JacketOrTrouse.equals("trouse")) {return new Trouse();} else {return null;}}}
定义Jacket类
package com.hpg.demo.cloth;public class Jacket extends Cloth{public Jacket(){typeName = "jacket";}@Overridevoid make() {System.out.println("make:"+typeName);}}
定义Trouse类
package com.hpg.demo.cloth;public class Trouse extends Cloth{public Trouse(){typeName = "trouse";}@Overridevoid make() {System.out.println("make:"+typeName);}}
测试类TestMain
package com.hpg.demo.cloth;public class TestMain {public static void main(String args[]){Factory factory = new ChinaFactory();factory.orderCloth("jacket");}}
执行结果:
make:jacket
simple labeling
0 0
- JAVA设计模式温故篇-工厂模式
- JAVA设计模式温故篇-观察者模式
- JAVA设计模式温故篇-装饰者模式
- Java设计模式之工厂模式篇
- java设计模式---简单工厂模式篇
- java设计模式---工厂方法模式篇
- java设计模式---抽象工厂模式篇
- java设计模式----工厂模式
- java 设计模式-工厂模式
- java设计模式-工厂模式
- java设计模式------工厂模式
- JAVA设计模式-工厂模式
- Java 设计模式 工厂模式
- Java设计模式-工厂模式
- Java设计模式--工厂模式
- Java设计模式 - 工厂模式
- java设计模式--工厂模式
- Java设计模式:工厂模式
- C#设计模式(十一)模板方法模式
- 经典算法问题的java实现<一>
- 对oracle大小写敏感的查询处理方式
- libsvm 学习笔记(三)--- svm-scale 使用方法介绍
- 用文件实现类似于数据库一样的功能(老古董,怀念用)
- JAVA设计模式温故篇-工厂模式
- leetcode 日经贴,python code -Longest Valid Parentheses
- 参数db_recovery_file_dest,log_archive_dest,log_archive_dest_n
- 经典算法问题的java实现<二>
- 朴素贝叶斯分类及程序简述笔记
- IE中tr之间有空白行,而在Firefox中没有空白
- maven中央仓库大集合
- SRLTE,SGLTE,SVLTE,CSFB,VoLTE的区别
- 非阻塞情况下connect产生EINPROGRESS错误