UML、对象创建型模式

本文详细介绍了UML中的关联关系、依赖关系、聚合关系、组合关系、泛化关系和实现关系,以及对象创建型设计模式,包括工厂方法、抽象工厂、建造者、原型和单例模式。阐述了各个模式的结构、应用场景和优缺点,帮助读者理解面向对象设计原则。
摘要由CSDN通过智能技术生成

UML

关联关系(Association)

是类与类之间最常用的一种关系, 它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。

单线实箭头,可自关联

关联关系中要表明对象间的关联关系,如是一对多还是一对一

依赖关系(Dependency)

一种使用关系,例如类A的某个方法需要类B做参数,即要使用类B的方法,用虚线表示

聚合关系(Aggregation)

表示一个整体与部分的关系,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立 存在。聚合关系用带空心菱形的直线表示。

组合关系(Composition)

也表示类之间整体和部分的关系, 但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有同生共死的关系。 如必须传递某个构造器参数以初始化类,用实心菱形的直线表示。

泛化关系(Generalization)

就是继承关系,用带空心三角形的直线来表示。

实现关系(Realization)

接口与实现的关系,用带空心三角形的虚线来表示。

设计模式

对象创建型模式

面向对象设计原则

QnGkdA.md.png

工厂方法模式

产品对象通过公共接口实现功能,抽象工厂声明工厂方法由具体子类去实现,工厂的目的是为了返回产品,抽象工厂声明的方法要返回抽象产品,每一个具体产品都对应有一个具体工厂,具体工厂返回具体产品,利用多态的性质,全程使用接口对象声明即可。

模式结构

• Product:抽象产品,产品对象的共同父类或接口

• ConcreteProduct:具体产品 ,实现了抽象产品接口

• Factory:抽象工厂,声明工厂方法,交给子类实现

• ConcreteFactory:具体工厂,实现抽象工厂中的工厂方法,返回一个具体产品类的实例

image.png

利用多态的性质,将通用方法抽象出来放在接口中,调用时更加灵活

所有的具体工厂类都具有同一抽象父类。在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,只要添加一个具体工厂和具体产品就可以了。这样,系统的可扩展性也就变得非常好,完全符合“开闭原则”。

public interface Log {
   
    void writeLog();
}
public class FileLog implements Log {
   
    @Override
    public void writeLog(){
   
        System.out.println("我是文件日志写入器");
    }
}
public class DataBaseLog implements Log {
   
    @Override
    public void writeLog(){
   
        System.out.println("我是数据库日志写入器");
    }
}
public interface AbstractLogFactory {
   
    Log createLog();
}
public class FileLogFactory implements AbstractLogFactory{
   
    @Override
    public Log createLog(){
   
        return new FileLog();
    }
}
public class DataBaseLogFactory implements AbstractLogFactory {
   
    @Override
    public Log createLog(){
   
        return new DataBaseLog();
    }
}
public class FactoryMethodPatternTest {
   
    public static void main(String[] args){
   
        AbstractLogFactory abstractLogFactory;

        abstractLogFactory=new FileLogFactory();
        abstractLogFactory.createLog().
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值