设计模式之创建型模式

OOP七大原则

开闭原则:对扩展开放,对修改关闭

里氏替换原则: 继承必须确保超类所所拥有的的性质在子类仍然成立。

依赖倒置原则:要面向接口编程,不要面向实现编程

单一职责原则: 控制类的粒度大小,将对象解耦,提高其内聚性

接口隔离原则: 要为各个类建立他们所需要的专用接口

迪米特法则:只与你的直接朋友交谈,不跟陌生人讲话

合成复用原则:尽量先使用组合或则聚合等关联关系来实现,其次才考虑使用继承关系来实现

设计模式类型

创建型模式

工厂模式

创建对象时不会对客户端暴露创建逻辑,使用一个共同的接口来指向新创建的对象。

理解:类似一个黑盒子,创建时送入接口,不知道里面的情况,出来给你给你已经创建好的对象;

实现:

创建shape接口——》创建接口的实现类,圆类,三角形类,正方形类——》创建ShapeFactory工厂根据传入的值来创建对应的对象。

测试中创建对象

	 //获取 Rectangle 的对象,并调用它的 draw 方法
      Shape shape2 = shapeFactory.getShape("RECTANGLE");
 
      //调用 Rectangle 的 draw 方法
      shape2.draw();

抽象工厂模式

通过一个超级工厂来创建其他工厂

在其中,接口负责创建一个相应对象的工厂

抽象工厂AbstractFactory——》工厂类 ShapeFactoryColorFactory——》创建一个工厂创造器/生成器类 FactoryProducer

实现:使用 FactoryProducer 来获取 AbstractFactory 对象。它将向 AbstractFactory 传递形状信息 ShapeCIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。同时它还向 AbstractFactory 传递颜色信息 ColorRED / GREEN / BLUE),以便获取它所需对象的类型。

举个例子:一个大工厂,可以生产小米工厂和华为工厂。通过小米/华为工厂可以制造旗下产品。抽象工厂生产产品族

建造者模式

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

理解:

指挥者(包工头)——》指挥抽象的建造者(类似工人的工作清单)

具体的建造者(工人)——》生产产品(楼房)

对象创建 创建指挥对象——》director.build(new Work())_;

也可以没有指挥者

单例模式

我们将创建一个 SingleObject 类。SingleObject 类有它的私有构造函数和本身的一个静态实例。 SingleObject 类提供了一个静态方法,供外界获取它的静态实例。SingletonPatternDemo 类使用 SingleObject 类来获取 SingleObject 对象。

  1. 懒汉式,线程不安全

  2. 懒汉式,线程安全 必须加锁 synchronized 才能保证单例

  3. 饿汉式

     private static Singleton instance = new Singleton();  //类开始直接创建
    
  4. 双检锁/双重校验锁

    if (singleton == null) {  
            synchronized (Singleton.class) {  
                if (singleton == null) {  
                    singleton = new Singleton();  
                }  
            }  
        }  
    
  5. 登记式/静态内部类

  6. 枚举

    public enum Singleton {  
        INSTANCE;  
        public void whateverMethod() {  
        }  
    }
    

原型模式

就是拷贝对象

借鉴菜鸟教程 

https://www.runoob.com/design-pattern/design-pattern-tutorial.htmlicon-default.png?t=M276https://www.runoob.com/design-pattern/design-pattern-tutorial.html还有B站的遇见狂神说

学习建议,通过代码来学习理解理论更快。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值