工厂设计模式
来源:互联网 发布:java 线程 join 编辑:程序博客网 时间:2024/05/17 02:57
观察代码1:
interface Fruit {public void eat();}class Apple implements Fruit {public void eat() {System.out.println("吃苹果。");}};class Orange implements Fruit {public void eat() {System.out.println("吃橘子。");}};public class CaseDemo05 {public static void main(String args[]) {Fruit f = new Orange();f.eat();}};
观察以上代码中存在的问题。
现在的程序中可以发现,在主方法(客户端)上,是通过关键字new 直接为接口进行实例化,也就是说以后在使用
的时候如果要不更改主方法的话,则主方法中永远只能使用一个类,这样的耦合度太深了。
interface Fruit {public void eat();}class Apple implements Fruit {public void eat() {System.out.println("吃苹果。");}};class Orange implements Fruit {public void eat() {System.out.println("吃橘子。");}};class Factory {public static Fruit getInstance(String className) {Fruit f = null;if ("apple".equals(className)) {f = new Apple();}if ("orange".equals(className)) {f = new Orange();}return f;}};public class Test {public static void main(String args[]) {Fruit f = Factory.getInstance(args[0]);f.eat();}};
此时,中间加入了一个过渡端(Factory),那么都通过过渡端找到接口的实例,这样的设计称为工厂设计,以后扩充子类的时候修改工厂即可:即:某一局部的修改不影响其他环境。
- 设计模式--工厂设计
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 工厂模式
- 设计模式-工厂模式
- 设计模式 -- 工厂模式
- 设计模式-工厂模式
- 设计模式----工厂模式
- 设计模式---工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式---工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- UVa 10887 - Concatenation of Languages
- UVa 141 The Spot Game
- UVa 10591 - Happy Number
- UVa 10391 - Compound Words
- C++11 多线程:数据保护
- 工厂设计模式
- extjs之键盘监听
- 程序中设定主显示器问题
- Eclipse插件的安装方法
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现(一)
- js-获取对象的某个属性
- java字符串转16进制
- spring中集成TimerTask执行定时任务
- This system is not registered with RHN