设计模式---工厂模式

对应慕课视频

第一部分:工厂模式概述

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 类来生成发型

 

原文地址:https://www.cnblogs.com/excellencesy/p/8621027.html