你将收获

1、掌握GoF 23种设计模式的应用场景、基本写法。实战案例及优缺点。

2、通过类比学习,掌握各设计模式之间的区别。

适用人群

1. 所有对Java编程语言感兴趣的人员; 2. 大专及以上学历的在校学生; 3. 在职工作人员; 4. 本课程适用于零基础学员。

课程介绍

不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。

我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。

本章内容将按照创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式)、结构型模式(代理模式、门面模式、装饰器模式、享元模式、组合模式、适配器模式、桥接模式)、行为型模式(模板方法模式、策略模式、责任链模式、迭代器模式、命令模式、状态模式、备忘录模式、中介者模式、解释器模式、观察者模式、访问者模式)的顺序讲解。

课程目录

学员评价

0.0
  • 0%
  • 0%
  • 0%
  • 0%
  • 0%

暂无评价

同学笔记

  • weixin_43222122 2020-08-03 18:08:36

    来源:原型模式的优缺点及小结 查看详情

    原型模式的优点

    1.性能优良,java自带的原型模式是基于内存二进制流的拷贝,比直接new一个对象性能提升了许多。

    2.可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,简化了创建过程。

    原型模式的缺点

    1.必须配备克隆(或者可拷贝)方法

    2.当对已有类进行改造的时候,需要修改代码,违反了开闭原则。

    3.深拷贝、浅拷贝需要运用得当,

     

  • weixin_43222122 2020-08-03 18:01:14

    来源:分析原型模式浅克隆带来的问题 查看详情

    原型模式的通用写法

    IProtortype接口

    public interface IProtortype <T>{
        T clone();
    }
    
    

     创建具体需要克隆对象的类ConcretePrototype

    public class ConcretePrototype implements IProtortype{
    
        private int age;
        private String name;
    
        public int getAge(){
            return age;
        }
        public void setAge(int age){
            this.age = age;
        }
        public String getName(){
            return name;
        }
        public void setName(String name){
            this.name = name;
        }
        @Override
        public ConcretePrototype clone() {
            ConcretePrototype concretePrototype = new ConcretePrototype();
            concretePrototype.setAge(this.age);
            concretePrototype.setName(this.name);
            return concretePrototype;
        }
    
        public String toString(){
            return "ConcretePrototype{"+
                    "age = " + age +
                    ", name = " + name +'\''+
                    '}';
        }
    
    }
    

    浅克隆

    import lombok.Data;
    
    import java.util.List;
    
    @Data
    public class ConcretePrototype implements Cloneable {
    
        private int age;
        private String name;
        private List<String> hobbies;
    
    
        @Override
        public ConcretePrototype clone() {
            try {
                //这是浅克隆,对引用类型的属性只能克隆其引用,而不是其值(也就是克隆对象与原型对象的
                // 引用类型的属性指向同一个内存地址)
                return (ConcretePrototype)super.clone();
            }catch (Exception e){
                return null;
            }
    
        }
    
        public String toString(){
            return "ConcretePrototype{"+
                    "age = " + age +
                    ", name = '" + name +'\''+
                    '}';
        }
    
    }

     

  • weixin_43222122 2020-08-03 16:44:52

    来源:原型模式的定义及应用场景 查看详情

    原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    调用者不需要知道任何细节,不调用构造函数。

    属于创建型模式

    原型模式的适用场景

    1.类初始化消耗资源较多

    2.new产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)

    3.构造函数比较复杂

    4.循环体中生产大量对象时

没有更多了