美文网首页
面向对象设计原则/常用设计模式

面向对象设计原则/常用设计模式

作者: 哇楼主 | 来源:发表于2019-10-16 15:37 被阅读0次

面向对象设计原则

  • 开闭原则:软件应该对扩展开放,对修改关闭。也就是说当我们新加一个需求的时候,我们在不改变源代码的前提下,可以扩展模块的功能,使其满足需求
    好处:只需对扩展的代码测试,提高代码的服用行和可维护性
  • 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有功能
  • 依赖倒置原则:使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给它们的实现类去完成。依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性
  • 单一职责原则:一个类只负责一项职责
  • 接口隔离原则:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
  • 迪米特法则:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。
  • 合成复用原则:它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

常用设计模式:

  • 单例模式:一个类只有一个实例,并且该类能自行创建这个实例的模式
public class Singleton {
//构造方法私有化,防止在外部被实例化
private Singleton() {}

private static volatile Singleton instance = null;

public static synchronized Singleton getInstance(){//同步,保证多线程唯一
    if (instance == null){
        instance = new Singleton();
    }
    return instance;
}
}
  • 抽象工厂模式:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。
interface AbstractFactory
{
public Product1 newProduct1();
public Product2 newProduct2();
}
class ConcreteFactory1 implements AbstractFactory
{
 public Product1 newProduct1()
 {
    System.out.println("具体工厂 1 生成-->具体产品 11...");
    return new ConcreteProduct11();
 }
 public Product2 newProduct2()
 {
    System.out.println("具体工厂 1 生成-->具体产品 21...");
    return new ConcreteProduct21();
  }
 }
  • 建造者模式:将一个复杂对象的构造与他的表示分离,使同样的创建过程可以有不同的表示
  • 代理模式:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
public class ProxyTest
{
public static void main(String[] args)
{
    Proxy proxy=new Proxy();
    proxy.Request();
}
}
//抽象主题
interface Subject
{
void Request();
}
//真实主题
class RealSubject implements Subject
{
public void Request()
{
    System.out.println("访问真实主题方法...");
}
}
//代理
class Proxy implements Subject
{
private RealSubject realSubject;
public void Request()
{
    if (realSubject==null)
    {
        realSubject=new RealSubject();
    }
    preRequest();
    realSubject.Request();
    postRequest();
}
public void preRequest()
{
    System.out.println("访问真实主题之前的预处理。");
}
public void postRequest()
{
    System.out.println("访问真实主题之后的后续处理。");
}
}
  • 适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作
//目标接口
interface Target
{
public void request();
}
//适配者接口
class Adaptee
{
public void specificRequest()
{       
    System.out.println("适配者中的业务代码被调用!");
}
}
//类适配器类
class ClassAdapter extends Adaptee implements Target
{
public void request()
{
    specificRequest();
}
}
//客户端代码
 public class ClassAdapterTest
{
 public static void main(String[] args)
{
    System.out.println("类适配器模式测试:");
    Target target = new ClassAdapter();
    target.request();
}
}
  • 观察者模式:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

相关文章

  • 面向对象设计原则

    面向对象设计原则 面向对象设计原则是设计模式的基础,每个设计模式都符合一一种或多种面向对象的设计原则。 常用的面向...

  • 面向对象:6大原则、24种设计模式

    接上一篇:面向对象介绍 为什么要学设计原则、设计模式? 若不学好经典设计模式,和通过设计模式理解面向对象的原则,你...

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 设计模式的原则

    面向对象的原则是面向对象的目标,而设计模式是为了实现这些原则的手段和方法。这也就是为什么要有设计模式。 面向对象的...

  • 设计模式

    1 软件设计原则和设计模式概览 1.1 面向对象设计原则 1.2 GOF设计模式 1.3 C嵌入式编程设计模式 ...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 面向对象设计原则/常用设计模式

    面向对象设计原则 开闭原则:软件应该对扩展开放,对修改关闭。也就是说当我们新加一个需求的时候,我们在不改变源代码的...

  • 要点1 Java相关

    1. 熟练掌握Java技术,熟悉面向对象思想,熟悉常用设计模式; 面向对象思想: 继承, 封装, 多态 设计模式:...

  • iOS常用设计模式详解

    1、设计原则 前面五种被称为面向对象设计中常用的SOLID原则。 1、责任链模式 责任链模式就是为一个请求或者一个...

  • Android 设计模式之常见设计模式总结

    今天我们来总结下我们所学习的设计模式 面向对象的六大原则 Android 设计模式之面向对象的六大原则 面向对象的...

网友评论

      本文标题:面向对象设计原则/常用设计模式

      本文链接:https://www.haomeiwen.com/subject/hccumctx.html