博客
关于我
Java设计模式小结
阅读量:725 次
发布时间:2019-03-17

本文共 3890 字,大约阅读时间需要 12 分钟。

hma设计模式的理解与应用

  • 面向对象的常见设计原则
  • 在面向对象编程中,理解并应用正确的设计原则是提高代码质量和维护性的基础。以下是常见的面向对象设计原则:

  • 单一原则(Affinity):每个类只拥有数据和行为,避免将数据和方法分散在多个类中。

  • 开闭原则(Open-Closed Principle,OCP):类的开闭是指类对扩展开放,对修改关闭。类可以扩展新的功能而不影响已有功能,同时可以禁止修改已有功能。

  • 里氏替换(Liskov Substitution Principle,LSP):像实体一样,用有另一性的对象替换原本的对象,从而保持同样的行为。

  • 依赖注入(Dependency Injection):通过设定事件来让对象间建立关系,而不是直接在代码中设定。

  • 接口 séparator(Interface Separation):将对象间的解耦,每个接口代表一种行为模式。

  • 设计模式概述与分类

  • 设计模式是软件开发中的常用经验法则,通过代码间接解决问题。当类出现共同的行为模式时,可以通过设计模式实现代码的复用和可维护。

    设计模式主要分为三类:

    A. 创建型模式(Creative Patterns):处理对象的创建问题,比如工厂模式。B. 结构型模式(Structural Patterns):处理类结构问题,比如Adapter、Composite等。C. 行为型模式(Behavioral Patterns):处理对象间协作问题,比如Strategy、Command等。

    在创建型模式中,简单工厂模式是一个经常使用的设计模式。它通过引入一个工厂类,为多个对象的创建提供统一的接口,从而隔离了对象的创建逻辑。

    简单工厂模式的实现方式:

    • 定义一个抽象工厂类,包含一个用于创建对象的静态方法。
    • 每个具体工厂类继承自抽象工厂类,并实现具体的创建方法。
    • 在使用工厂时,客户端只需要依靠工厂类来获取所需的对象类型。

    下面以动物工厂模式为例:

    // 抽象工厂public abstract class AnimalFactory {    public static Animal createAnimal(String type) {        if ("dog".equals(type)) {            return new Dog();        } else if ("cat".equals(type)) {            return new Cat();        } else {            return null;        }    }}// 具体工厂public class DogFactory extends AnimalFactory {    @Override    public Animal createAnimal(String type) {        return new Dog();    }}// 具体实现类public class Dog extends Animal {    @Override    public void eat() {        System.out.println("狗吃肉");    }}// 使用工厂public class AnimalDemo {    public static void main(String[] args) {        Dog dog = AnimalFactory.createAnimal("dog");        dog.eat();                Cat cat = AnimalFactory.createAnimal("cat");        cat.eat();                Animal a = AnimalFactory.createAnimal("dog");        System.out.println(a != null && a.eat());                try {            Animal other = AnimalFactory.createAnimal("pig");            if (other != null) {                other.eat();            } else {                System.out.println("未提供该动物类型");            }        } catch (NullPointerException e) {            System.out.println("未注册该类型");        }    }}

    工作方式:

  • 工厂方法模式
  • Factory 接口
  • 工厂实例的多态性
  • Sherlock Holmes理论。
  • 工厂方法模式的优点是主要关注业务的核心需求。每个具体工厂类只需要实现一个统一的接口方法,从而避免了直接在代码中使用 new 运算符,满足了开闭原则。

    1. 单例模式
    2. 单例模式确保一个应用程序中某个类只存在一个实例。

      a. 饿汉式:

      public class SinglonGrudy {    private static Singlon s = new Singlon();    public static Singlon getSinglon() {        return s;    }    private Singlon() {        //私有构造方法,不允许外部new创建    }}

      b. 懒汉式:

      public class SinglonLazyly {    private static Singlon s = null;    public static Singlon getSinglon() {        if (s == null) {            s = new Singlon();            return s;        }        return s;    }    private Singlon() {        //懒汉式先用的时候创建,这样可以节省内存    }}

      单例模式应用场景主要是资源受限的系统,比如数据库连接池、配置文件加载,以及确保内存中只有一个对象存在。

      1. 装饰模式
      2. 装饰模式通过给对象包装增添功能,使得系统具有更大的灵活性。常见应用包括文件读写、用户信息处理等场景。

        实现装饰模式通常会使用包装实例的方式,通过对方法调用进行增强:

        // 工具类:FileInputStream装饰public class FileStreamDecorate extends InputStream {    private InputStream in;    public FileInputStream Decorate(InputStream in) {        this.in = new some();        return in;    }    @Override    public int read(byte[] b, int offset, int len) {        //实现读取方式    }}// 使用场景FileInputStream fis = new FileStreamDecorate(new FileInputStream("file"));byte[] buffer = new byte[1024];int len = fis.read(buffer);// ...
        1. 模板模式
        2. 模板设计模式用于代码中的标准算法骨架,其中可以灵活替换具体的实现方式。其特点是:

          • 简化代码结构,方便管理和维护
          • 提供灵活的扩展方式
          • 适用于容易扩展的算法架构

          模板模式的主要特点是在定义算法时,代码中的占位符会被后续的具体实现替换。

          1. Runtime类
          2. Java Runtime类是应用运行时环境的重要组成部分,用于连接运行时环境。可以通过 Runtime 类调用系统命令,如重启或关机:

            import java.io.IOException;public class RuntimeDemo {    public static void main(String[] args) throws IOException {        Runtime r = Runtime.getRuntime();        r.exec("at 12:00 am shutdown -s");    }}
            • Runtime.getRuntime() 获取当前运行时。
            • exec("命令")执行外部命令,如 shutdown -s 关机。

            需要注意的是,调用外部命令需要注意权限问题。而且系统命令可能会导致不稳定,这种情况下应该谨慎使用。

            总结:

            • 面向对象设计原则是保证代码的高内聚低耦合,易于维护。
            • 设计模式是处理常见问题的高效方法,选择合适的模式能显著提升代码质量
            • 单例模式适用于资源有限的场景,需谨慎使用
            • 装饰模式和模板模式都是代码扩展的有效方式
            • Runtime 类能够真正或虚拟执行命令,是Java系统的一部分

    转载地址:http://swjez.baihongyu.com/

    你可能感兴趣的文章
    Oracle查看数据库会话连接
    查看>>
    Oracle查询前几条数据的方法
    查看>>
    oracle树形查询 start with connect by
    查看>>
    oracle毕业论文题目,历届毕业论文申报题目大全.doc
    查看>>
    oracle求助---win7下oracle配置相关疑问Starting Oracle Enterprise Manager 10g Database Control ...发生系统错误 5。
    查看>>
    Oracle流程控制语句
    查看>>
    oracle深度解析检查点
    查看>>
    Oracle游标
    查看>>
    oracle游标数最大数,Oracle 最大连接数 最大游标数
    查看>>
    oracle用户改名
    查看>>
    oracle用户解压不了,PLSQL developer 连接不上64位Oracle 的解决方法
    查看>>
    oracle用户解锁
    查看>>
    Oracle用游标删除重复数据
    查看>>
    Tomcat学习总结(19)—— 为什么首选Tomcat作为JavaWeb应用服务器?
    查看>>
    oracle的内置函数
    查看>>
    Oracle的存储结构
    查看>>
    Oracle的聚合函数group by结合CUBE和ROLLUP的使用
    查看>>
    Oracle监听配置、数据库实例配置等
    查看>>
    Oracle知识补充
    查看>>
    Oracle笔记(十三) 视图、同义词、索引
    查看>>