zoukankan      html  css  js  c++  java
  • 设计模式---工厂模式

    对应慕课视频

    第一部分:工厂模式概述

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

     

  • 相关阅读:
    JZOJ_5838. 【广州市选2011一试】旅游路线 (Standard IO)
    JZOJ_4421. aplusb (Standard IO)
    JZOJ_3928. 射击 (Standard IO)
    JZOJ_3927. 可见点数 (Standard IO)
    AFO
    基础数论Ⅱ——笑容渐渐消失
    基础数论Ⅰ——数学渣默默流泪
    模板——二分
    模板——最小费用流
    模板——Dinic
  • 原文地址:https://www.cnblogs.com/excellencesy/p/8621027.html
Copyright © 2011-2022 走看看