• 设计模式---工厂模式


    对应慕课视频

    第一部分:工厂模式概述

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

     

  • 相关阅读:
    再谈Linux内核中的RCU机制
    Linux下的crontab定时执行任务命令详解
    Linux 2.6内核中新的锁机制--RCU
    linux内核自锁旋spinlock常用宏解释
    Linux内核list/hlist解读
    Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)
    Linux下的进程类别(内核线程、轻量级进程和用户进程)以及其创建方式--Linux进程的管理与调度(四)
    Linux进程ID号--Linux进程的管理与调度(三)
    内核源码阅读(三)进程命名空间和用户命名的实现
    Linux的命名空间详解--Linux进程的管理与调度(二)
  • 原文地址:https://www.cnblogs.com/excellencesy/p/8621027.html
Copyright © 2020-2023  润新知