# classes

In object-oriented programming, a class bundles data and functionality and serves as a blueprint for creating object instances.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Generics in Kotlin

DevFeed: [Generics in Kotlin](<https://devfeed.tech/articles/generics-in-kotlin-39335.md>)

Original publisher: [Read original article](<https://kt.academy/article/kfde-generics>)

Published: 2024-03-18T00:01:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [generics](<https://devfeed.tech/topics/generics.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Type Parameter](<https://devfeed.tech/topics/type-parameter.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [classes](<https://devfeed.tech/topics/classes.md>), [function](<https://devfeed.tech/topics/function.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [kotlin compiler](<https://devfeed.tech/topics/kotlin-compiler.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [functions](<https://devfeed.tech/tags/functions.md>), [generics](<https://devfeed.tech/tags/generics.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-compiler](<https://devfeed.tech/tags/kotlin-compiler.md>), [programming](<https://devfeed.tech/tags/programming.md>), [type-parameter](<https://devfeed.tech/tags/type-parameter.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains how generics work in Kotlin. It covers generic functions, classes, and interfaces, including type parameters, type arguments, explicit specification, compiler inference, and relationships between argument and result types.

### Source excerpt

The essence of how generics work in Kotlin.

## Data classes in Kotlin

DevFeed: [Data classes in Kotlin](<https://devfeed.tech/articles/data-classes-in-kotlin-39329.md>)

Original publisher: [Read original article](<https://kt.academy/article/kfde-data>)

Published: 2023-11-13T00:01:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [classes](<https://devfeed.tech/topics/classes.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [type](<https://devfeed.tech/tags/type.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains Kotlin data classes, including how they differ from regular classes and how the compiler generates methods such as equals, hashCode, toString, and component functions. It also discusses inherited object behavior and when custom overrides are typically unnecessary.

### Source excerpt

What are data classes in Kotlin and how do we use them.

## Effective Kotlin Item 48: Consider using object declarations

DevFeed: [Effective Kotlin Item 48: Consider using object declarations](<https://devfeed.tech/articles/effective-kotlin-item-48-consider-using-object-declarations-39286.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-object-declarations>)

Published: 2023-11-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [object](<https://devfeed.tech/topics/object.md>), [classes](<https://devfeed.tech/topics/classes.md>), [Kotlin programming](<https://devfeed.tech/topics/kotlin-programming.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [consider](<https://devfeed.tech/tags/consider.md>), [effective](<https://devfeed.tech/tags/effective.md>), [instead](<https://devfeed.tech/tags/instead.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [object](<https://devfeed.tech/tags/object.md>), [regular](<https://devfeed.tech/tags/regular.md>), [using](<https://devfeed.tech/tags/using.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains when to use Kotlin object declarations instead of regular classes, including the covariant Nothing object pattern for generic types.

### Source excerpt

Why we should use object declarations instead of regular classes.

## Kotlin Reflection: Method and property references

DevFeed: [Kotlin Reflection: Method and property references](<https://devfeed.tech/articles/kotlin-reflection-method-and-property-references-39214.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-reflection>)

Published: 2023-10-16T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [classes](<https://devfeed.tech/topics/classes.md>), [function](<https://devfeed.tech/topics/function.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [functions](<https://devfeed.tech/tags/functions.md>), [gson](<https://devfeed.tech/tags/gson.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [property](<https://devfeed.tech/tags/property.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial introduces Kotlin reflection, explaining how programs inspect classes, functions, properties, annotations, constructors, and other source-code elements at runtime. It also describes uses in Gson serialization, Koin dependency injection, and the hierarchy of Kotlin reflection reference types.

### Source excerpt

The general hierarchy of Kotlin reference classes, and details about method and property references.

## Sealed Generics and SKIE - Paul Hawke

DevFeed: [Sealed Generics and SKIE - Paul Hawke](<https://devfeed.tech/articles/sealed-generics-and-skie-paul-hawke-38314.md>)

Original publisher: [Read original article](<https://touchlab.co/sealed-generics-and-skie>)

Published: 2023-10-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [generics](<https://devfeed.tech/topics/generics.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [classes](<https://devfeed.tech/topics/classes.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [classes](<https://devfeed.tech/tags/classes.md>), [generics](<https://devfeed.tech/tags/generics.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [sealed](<https://devfeed.tech/tags/sealed.md>), [sealed-classes](<https://devfeed.tech/tags/sealed-classes.md>), [skie](<https://devfeed.tech/tags/skie.md>), [swift](<https://devfeed.tech/tags/swift.md>), [type](<https://devfeed.tech/tags/type.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This tutorial explores how SKIE improves the use of Kotlin sealed classes with generics when exposing Kotlin Multiplatform code to Swift. It discusses type discovery in Xcode, Swift interoperability, and concurrency-related code paths.

### Source excerpt

Sealed Classes and Generics are both very useful for Kotlin APIs, and very painful with KMP and Swift. One of SKIE's lesser known benefits is the restoration of using Sealed Classes with generics, along with proper type discovery in Xcode.

## Separate code from data

DevFeed: [Separate code from data](<https://devfeed.tech/articles/separate-code-from-data-37569.md>)

Original publisher: [Read original article](<https://blog.klipse.tech/databook/2022/06/22/separate-code-from-data.html>)

Author: Yehonathan Sharvit

Published: 2022-06-22T02:32:24Z

Content type: tutorial

Language: en

Sources: [Klipse](<https://devfeed.tech/sources/klipse.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [classes](<https://devfeed.tech/topics/classes.md>)

Tags: [behavior](<https://devfeed.tech/tags/behavior.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [d](<https://devfeed.tech/tags/d.md>), [data](<https://devfeed.tech/tags/data.md>), [dop](<https://devfeed.tech/tags/dop.md>), [oop](<https://devfeed.tech/tags/oop.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This article explores the first principle of Data-Oriented Programming: separating code, or behavior, from data. It explains how the principle can be followed or violated in both object-oriented programming and functional programming, including examples involving classes, static methods, and lexical scope.

### Source excerpt

The first principle of Data-Oriented Programming (DOP) is a design principle that recommends a clear separation between code (behavior) and data. This may appear to be a FP principle, but in fact, one can adhere to it or break it either in FP or in OOP:

## Compiler-generated classes, methods and fields in Java

DevFeed: [Compiler-generated classes, methods and fields in Java](<https://devfeed.tech/articles/compiler-generated-classes-methods-and-fields-in-java-38632.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_03_19_compiler_generated_classes_methods_and_fields_in_java/>)

Published: 2020-03-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>), [class](<https://devfeed.tech/topics/class.md>), [classes](<https://devfeed.tech/topics/classes.md>)

Tags: [bytecode](<https://devfeed.tech/tags/bytecode.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [fields](<https://devfeed.tech/tags/fields.md>), [java](<https://devfeed.tech/tags/java.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

This tutorial explains how the Java compiler generates classes, methods, and fields that do not appear in source code. It covers synthetic members, bridge and access flags, nested classes, generated bytecode, and inspection with javap.

### Source excerpt

Source Introduction When we write program in Java we create some classes, methods, fields and put all of this into our source code -- .java files. After these files are compiled with javac (Java Compiler) into .class files we got a bunch of Java bytecode. It turns out that not only we create classes, methods and fields in our source code, but also compiler by itself can create them when needed. In this article we'll try to get into the compiler-generated topic, will find out what are synthetic and bridge, access flags, learn some new things from official documentation and maybe more. Let's dive in.

## What is good code?

DevFeed: [What is good code?](<https://devfeed.tech/articles/what-is-good-code-37741.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/good-code/>)

Author: Carlos Alexandro Becker

Published: 2015-12-27T00:00:00Z

Content type: opinion

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [clean-code](<https://devfeed.tech/topics/clean-code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [functions](<https://devfeed.tech/topics/functions.md>), [unit tests](<https://devfeed.tech/topics/unit-tests.md>), [classes](<https://devfeed.tech/topics/classes.md>), [object](<https://devfeed.tech/topics/object.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [clean-code](<https://devfeed.tech/tags/clean-code.md>), [code](<https://devfeed.tech/tags/code.md>), [functions](<https://devfeed.tech/tags/functions.md>), [object](<https://devfeed.tech/tags/object.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

A personal essay reevaluates common ideas about good code, including small methods and classes, meaningful names, unit tests, and refactoring. The author reflects on how experience and studying object-oriented programming changed their view of Clean Code guidance.

### Source excerpt

I've been wanting to write this for a long time, just to clarify my thoughts on the subject. Now, on vacations, I took a couple of days and finally did it. This is a personal opinion based on my personal experience and tons of books I have read, and I am not, by any means, the supreme holder of the truth, so you will probably disagree with me at some point.

## Protocols in Swift With Core Data

DevFeed: [Protocols in Swift With Core Data](<https://devfeed.tech/articles/protocols-in-swift-with-core-data-37500.md>)

Original publisher: [Read original article](<https://www.cimgf.com/2014/10/29/protocols-in-swift-with-core-data/>)

Author: Matt Long

Published: 2014-10-29T16:52:07Z

Content type: tutorial

Language: en

Sources: [Cocoa Is My Girlfriend](<https://devfeed.tech/sources/cocoa-is-my-girlfriend.md>)

Topics: [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [classes](<https://devfeed.tech/topics/classes.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [core-data](<https://devfeed.tech/tags/core-data.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [intermediate](<https://devfeed.tech/tags/intermediate.md>), [protocols](<https://devfeed.tech/tags/protocols.md>), [swift](<https://devfeed.tech/tags/swift.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A screencast demonstrates how to use Swift protocols with Core Data to display different managed object types generically in a table view controller.

### Source excerpt

Sometimes you have a set of objects you want to display in the same form-say, for example, in a table view controller. What if those objects have, by design, nothing in common and nothing to do with each other? This is a case where you can create and conform to a protocol-known in some languages [...]

## Elliptic Curves as Python Objects

DevFeed: [Elliptic Curves as Python Objects](<https://devfeed.tech/articles/elliptic-curves-as-python-objects-40347.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/02/24/elliptic-curves-as-python-objects/>)

Published: 2014-02-24T10:00:28Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [classes](<https://devfeed.tech/topics/classes.md>), [object](<https://devfeed.tech/topics/object.md>), [constructor](<https://devfeed.tech/topics/constructor.md>), [test](<https://devfeed.tech/topics/test.md>), [unit test](<https://devfeed.tech/topics/unit-test.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [elliptic-curves](<https://devfeed.tech/tags/elliptic-curves.md>), [groups](<https://devfeed.tech/tags/groups.md>), [object](<https://devfeed.tech/tags/object.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [test](<https://devfeed.tech/tags/test.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>)

### AI overview

This tutorial translates elliptic-curve point addition from its geometric and formal description into Python code. It introduces curve and point classes, associates each point with its curve, implements relevant operators, and includes checks that points lie on smooth curves.

### Source excerpt

Last time we saw a geometric version of the algorithm to add points on elliptic curves. We went quite deep into the formal setting for it (projective space $ \mathbb{P}^2$), and we spent a lot of time talking about the right way to define the "zero" object in our elliptic curve so that our issues with vertical lines would disappear. With that understanding in mind we now finally turn to code, and write classes for curves and points and implement the addition algorithm.

## Random (Psychedelic) Art

DevFeed: [Random (Psychedelic) Art](<https://devfeed.tech/articles/random-psychedelic-art-40252.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/01/01/random-psychedelic-art/>)

Published: 2012-01-01T19:11:28Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [classes](<https://devfeed.tech/topics/classes.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [art](<https://devfeed.tech/tags/art.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kolmogorov-complexity](<https://devfeed.tech/tags/kolmogorov-complexity.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [primer](<https://devfeed.tech/tags/primer.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [random-number-generators](<https://devfeed.tech/tags/random-number-generators.md>)

### AI overview

A Python tutorial that introduces objects and classes while constructing randomized psychedelic art. It explains how images are represented as pixel grids with RGB color values and uses mathematical functions to generate colors.

### Source excerpt

And a Pinch of Python Next semester I am a lab TA for an introductory programming course, and it's taught in Python. My Python experience has a number of gaps in it, so we'll have the opportunity for a few more Python primers, and small exercises to go along with it. This time, we'll be investigating the basics of objects and classes, and have some fun with image construction using the Python Imaging Library.

## The UML Class Diagram

DevFeed: [The UML Class Diagram](<https://devfeed.tech/articles/the-uml-class-diagram-40756.md>)

Original publisher: [Read original article](<https://radek.io/posts/uml-class-diagram/>)

Published: 2011-08-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [class](<https://devfeed.tech/topics/class.md>), [classes](<https://devfeed.tech/topics/classes.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [aggregation](<https://devfeed.tech/tags/aggregation.md>), [cheat-sheet](<https://devfeed.tech/tags/cheat-sheet.md>), [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [relationships](<https://devfeed.tech/tags/relationships.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

This article explains UML class diagrams, including how to represent classes, methods, attributes, inheritance, interfaces, associations, aggregation, and composition. It also describes the distinctions among these relationships and their graphical notation.

### Source excerpt

One of the most useful UML diagrams explained.

## Open/Closed Principle in Software Design

DevFeed: [Open/Closed Principle in Software Design](<https://devfeed.tech/articles/open-closed-principle-in-software-design-40728.md>)

Original publisher: [Read original article](<https://radek.io/posts/openclosed-principle-in-software-design/>)

Published: 2011-08-04T00:00:00Z

Content type: article

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Software](<https://devfeed.tech/topics/software.md>), [classes](<https://devfeed.tech/topics/classes.md>), [function](<https://devfeed.tech/topics/function.md>), [modules](<https://devfeed.tech/topics/modules.md>), [unit tests](<https://devfeed.tech/topics/unit-tests.md>)

Tags: [changes](<https://devfeed.tech/tags/changes.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [customer](<https://devfeed.tech/tags/customer.md>), [design](<https://devfeed.tech/tags/design.md>), [developers](<https://devfeed.tech/tags/developers.md>), [open-closed](<https://devfeed.tech/tags/open-closed.md>), [software](<https://devfeed.tech/tags/software.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article explains the Open/Closed Principle in software design: software entities such as classes, modules, and functions should be open for extension but closed for modification. It argues that designing for likely changes can reduce the need to alter existing code, while noting that the principle is a guideline rather than an unconditional rule.

### Source excerpt

I build software products and write on the Internet.

## Design Patterns: Abstract Factory

DevFeed: [Design Patterns: Abstract Factory](<https://devfeed.tech/articles/design-patterns-abstract-factory-40670.md>)

Original publisher: [Read original article](<https://radek.io/posts/design-patterns-abstract-factory/>)

Published: 2011-07-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [abstract class](<https://devfeed.tech/topics/abstract-class.md>), [Software](<https://devfeed.tech/topics/software.md>), [class](<https://devfeed.tech/topics/class.md>), [classes](<https://devfeed.tech/topics/classes.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Qt](<https://devfeed.tech/topics/qt.md>), [GTK](<https://devfeed.tech/topics/gtk.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [abstract-class](<https://devfeed.tech/tags/abstract-class.md>), [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [design](<https://devfeed.tech/tags/design.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [example](<https://devfeed.tech/tags/example.md>), [gnome](<https://devfeed.tech/tags/gnome.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interface-design](<https://devfeed.tech/tags/interface-design.md>), [kde](<https://devfeed.tech/tags/kde.md>), [linux](<https://devfeed.tech/tags/linux.md>), [object](<https://devfeed.tech/tags/object.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [platform](<https://devfeed.tech/tags/platform.md>), [software](<https://devfeed.tech/tags/software.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-components](<https://devfeed.tech/tags/ui-components.md>), [user-interface](<https://devfeed.tech/tags/user-interface.md>)

### AI overview

This tutorial explains the Abstract Factory design pattern, which encapsulates the creation of related families of objects without specifying their concrete classes. It uses a cross-platform user-interface example in which separate factories create components for KDE/Qt and GNOME/Gtk environments.

### Source excerpt

Software design patterns by example