本文共 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("未注册该类型"); } }}
工作方式:
工厂方法模式的优点是主要关注业务的核心需求。每个具体工厂类只需要实现一个统一的接口方法,从而避免了直接在代码中使用 new
运算符,满足了开闭原则。
单例模式确保一个应用程序中某个类只存在一个实例。
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() { //懒汉式先用的时候创建,这样可以节省内存 }}
单例模式应用场景主要是资源受限的系统,比如数据库连接池、配置文件加载,以及确保内存中只有一个对象存在。
装饰模式通过给对象包装增添功能,使得系统具有更大的灵活性。常见应用包括文件读写、用户信息处理等场景。
实现装饰模式通常会使用包装实例的方式,通过对方法调用进行增强:
// 工具类: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);// ...
模板设计模式用于代码中的标准算法骨架,其中可以灵活替换具体的实现方式。其特点是:
模板模式的主要特点是在定义算法时,代码中的占位符会被后续的具体实现替换。
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
关机。需要注意的是,调用外部命令需要注意权限问题。而且系统命令可能会导致不稳定,这种情况下应该谨慎使用。
总结:
转载地址:http://swjez.baihongyu.com/