设计模式 (二)工厂方法模式(FactoryMethod)
来源:互联网 发布:医药软件哪个好 编辑:程序博客网 时间:2024/05/22 06:21
工厂方法模式原理图:
具体实现代码:
package com.designpattern.factorymethod;public interface FactoryMethod {public Animal createAnimal();}
package com.designpattern.factorymethod;public class DolphinFactory implements FactoryMethod {@Overridepublic Animal createAnimal() {return new Dolphin();}}
package com.designpattern.factorymethod;public class TigerFactory implements FactoryMethod {@Overridepublic Animal createAnimal() {return new Tiger();}}
package com.designpattern.factorymethod;public interface Animal {public void eat();}
package com.designpattern.factorymethod;public class Dolphin implements Animal {@Overridepublic void eat() {System.out.println("Dolphin is eating");}public void swim() {System.out.println("Dolphin is swimming");}}
package com.designpattern.factorymethod;public class Tiger implements Animal {@Overridepublic void eat() {System.out.println("Tiger is eating");}public void run() {System.out.println("Tiger is running");}}
package com.designpattern.factorymethod;public class Client {public static void main(String[] args) {FactoryMethod factory = new TigerFactory();Animal tiger = factory.createAnimal();tiger.eat();factory = new DolphinFactory();Animal dolphin = factory.createAnimal();dolphin.eat();}}
在工厂方法模式中,客户端不在负责对象的创建,而是把这个责任交给了具体的工厂类,客户端只负责对象的调用,从而明确各个类的职责。
如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体的产品类就可以了,不会影响但原来的其他的代码,代码量也不会变大,后期维护更加容易,增强了系统的可扩展性。
但是使用这个模式的时候而外地编写代码,增加了工作量。
- 设计模式(二) 工厂方法(FactoryMethod)
- 设计模式 (二)工厂方法模式(FactoryMethod)
- 设计模式 (二)工厂方法模式(FactoryMethod)
- 设计模式 (二)工厂方法模式(FactoryMethod)
- 设计模式(二)工厂方法模式(FactoryMethod)-创建型
- 设计模式--工厂方法(FactoryMethod)
- 设计模式工厂方法(FactoryMethod)
- 设计模式之--工厂方法模式(FactoryMethod )
- 设计模式 -- 工厂方法模式 FactoryMethod
- 设计模式之工厂方法模式(FactoryMethod)
- 设计模式-工厂方法模式-factorymethod-python
- FactoryMethod(工厂方法)模式
- 工厂方法(FactoryMethod)模式
- 工厂方法模式(FactoryMethod)
- 设计模式的实现(C++)------工厂方法模式(FactoryMethod)
- iOS 设计模式之工厂方法模式(FactoryMethod)
- FactoryMethod 工厂方法模式
- 工厂方法模式(FactoryMethod)
- 数据结构基础(5)-->二分查找
- ubuntu下eclipse环境配置
- 网卡的模式
- C# WORD操作实现代码
- LDD3源码分析之slab高速缓存
- 设计模式 (二)工厂方法模式(FactoryMethod)
- iPhone/Mac Objective-C内存管理教程和原理剖析
- extern用法详解(转)
- setsockopt设置socket状态
- ftok() ENOENT: A component of path does not exist, or path is an empty string.
- Android设置全屏
- 十六、设计模式 之 命令模式
- CentOS6.2下源码安装openStack glance
- Android Widget 实例(世界杯倒计时)