三九宝宝网宝宝百科宝宝知识

java设计模式工厂方法

02月22日 编辑 39baobao.com

[Java教程:Java设计模式之中介者模式]一、引子 中介在现实生活中并不陌生,满大街的房屋中介、良莠不齐的出国中介……。它们的存在是因为它们能给我们的生活带来一些便利:租房、买房用不着各个小区里瞎转;出国留学...+阅读

面向抽象(抽象类或接口)编程。

IWorkFactory studentWorkFactory = new StudentWorkFactory(); 注意:类型是接口类型,即抽象工厂,抽象工厂生产的是抽象产品,而new的则是具体工厂,是由子类实现的,具体工厂生产具体产品。面向抽象的好处:1.在设计抽象的时候不用管具体的实现,只要定义接口知道它用来干什么就行,这样,我只需要知道抽象接口就能继续下面的开发设计工作了,而不用事先设计具体的实现内容;2. 可以扩展多个子类实现抽象接口,更利于系统后期的扩展,而对原系统不造成任何影响,即:开-闭原则。

TeacherWork tt = new TeacherWork(); 不用说就是面向具体实现类编程,缺点就是扩展性不好,对系统后期维护扩展影响较大。

举个简单的例子:

假如在系统的A.java中代码中使用了TeacherWork 类型对象,是满足了目前软件的需求,但是,如果有一天需求变化了需要一个StudentWork 类型对象,该怎么办?只能修改A.java类来满足这样的修改需求。这样就影响了原来系统结构稳定性,需要重新调试和测试,而这带来的维护成本是非常大的,有时可能还会带来系统错误,而影响系统运行。

如果在A.java类中应用Work接口类型就不会存在这种问题,A.java不需要任何修改,只需要修改注入到A中的Work接口的具体实现类即可。

面向抽象编程的好处就在于对系统维护和扩展上,即在不影响原系统稳定运行的基础上增加新的扩展行为,即要符合“开-闭”原则。可能会因此而失去一定的效率问题,但是对于后期的维护成本来说,这个可以忽略不计。 推荐你一本好书:《软件秘笈-设计模式那点事》其中讲解的设计模式很到位,还有每个模式的静态类图和JDK中设计模式的具体分析讲解,读了收获一定很大。祝你成功!

以下为关联文档:

java入门的程序设计高手们解答1. import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class Count extends JF...

Java程序设计试题一 构造函数Sandwich()被执行时,先执行它的父类PortableLunch,PortableLunch又先执行它的父类Lunch,Lunch又先执行它的父类Meal。所以顺序是Meal>Lunch>PortableLunch>Bread>C...

工厂设计与设施的卫生有何要求选址肉类联合加工厂、屠宰厂、肉制品厂应建在地势较 高、干燥、水源充足,交通方便,无有害气体、灰尘及其他污染源,便 于排放污水的地区。不得建在居民稠密的地区,肉制品加工厂 (...

java中调用父类构造方法非静态的变量在别的类里面是不能直接用的。。 若要使用的话,就要通过实例化该父类,通过【实例名.属性名】来访问、、、 你自己看一下把!! class Point{ int x,y; static int c;...

红米note2进入工厂模式电池矫正卡刷流程: 1,先下载一个对应机型的卡刷刷机包(可以到官方,ROM之家或ROM基地下载)。 2,把下载的刷机包直接放在SD卡的根目录(有些设备不支持外置内存卡,可以复制到内置内存卡中,道理一...

什么是java方法重载首先给LZ一个例子先吧 class ChongZai{ public void a(int a); public void a(Strting a); public void a(int a,int b); } 如上就是一个重载了 而重载要满足一下条件: 1.必...

java中的方法重载重载 含义: 只要方法名相同,参数表不同,就可以构成方法重载。 方法重载,在JAVA中,也叫: 编译时多态。(由编译的时候来确定调用哪个方法) 重载的原则: 向上就近匹配原则 注意: 如果只有...

什么是Java面向对象程序设计1、采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。 2、质量高在设计时,可重用现有的,在以前...

java新手为什么 java类中要有 static静态方法??1。静态方法的特点: 直接调用类名+方法名,不需要实例化类对象。 如: Hello.P(); 非静态方法则必须实例化一个对象出来,再通过对象调用该方法如: Hello hello=new Hello(参数1~n); h...

推荐阅读
图文推荐