第一部分:工厂模式概述
1,什么是设计模式?
设计模式(Design pattern)是一套被反复使用,多人知晓的,经过分类编目的,代码设计经验的总结。
2,设计模式的好处?
设计模式是优秀的使用案例,实用设计模式可以提高代码的可重用性,让代码更容易被他人理解保证代码的可靠性。
3,工厂模式的概念?
实例化对象,用工厂方法代替new操作。
工厂模式包括工厂方法模式,和抽象工厂模式。
抽象工厂模式是工厂方法模式的扩展。
4,工厂模式的意图?
定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。
工厂方法把实例化的工作推迟到子类的实现中去实现。
5,什么情况下适合工厂模式?
(1)有一组类似的对象需要被创建。
(2)在编码时不能预见需要创建哪种类的实例。
(3)系统需要考虑扩展性,不应该依赖于产品类实例如何被创建,组合,和表达的细节。
6,项目的现状
在系统软件中,经常面临着“对象”的创建工作,由于需求的变化,这个对象可能随之也会发生变化,但它却拥有比较稳定的接口。
为此,我们需要提供一种封装机制来隔离出这个易变对象的变化,从而保持系统中其他依赖该对象的对象不随着需求而变化。
7,基于项目的现状,将代码进行如下的设计:
(1)尽量松耦合,一个对象的依赖对象的变化与本身无关
(2)具体的产品与客户端剥离,责任分割。
8,工厂方法模式类图
9,应用案例
第二部分:工厂模式应用
1,编写发型接口
package com.songyan.project; /* * 发型接口 */ public interface HearInterface { //实现了发型 public void drow(); }
2,编写左偏分发型
package com.songyan.project; public class LeftHear implements HearInterface{ @Override public void drow() { System.out.println("左偏分发型"); } }
3,编写右偏分发型
package com.songyan.project; public class RightHear implements HearInterface{ public void drow() { System.out.println("右偏分"); } }
4,编写测试类
package com.songyan.project; public class SyTest { public static void main(String[] args) { HearInterface left= new LeftHear(); left.drow(); } }
以上着各种实现方式并不合理,若是添加新发型,就需要添加新的hear类,还需要在客户端显示的调用【不利于维护与管理因此新建HearFactory 类来生成发型