Oleksii iOS Developer

Oleksii iOS Developer I am an iOS Developer from Ukraine, with reach modern technologies experience.

❗A linked list is a collection of values arranged in a linear unidirectional sequence. A linked list has several theoret...
06/02/2023

❗A linked list is a collection of values arranged in a linear unidirectional sequence. A linked list has several theoretical advantages over contiguous storage options such as the Swift Array:

✅ Constant time insertion and removal from the front of the list.
✅ Reliable performance characteristics.

❗A linked list is a chain of nodes. Nodes have two responsibilities:

✅ Hold a value.
✅ Hold a reference to the next node. A nil value represents the end of the list.

05/01/2023

Beautiful Animation Example

Proxy is a structural design pattern that lets you provide a substitute or placeholder for another object. A proxy contr...
29/12/2022

Proxy is a structural design pattern that lets you provide a substitute or placeholder for another object. A proxy controls access to the original object, allowing you to perform something either before or after the request gets through to the original object.

Applicability:
❗️Lazy initialization (virtual proxy). This is when you have a heavyweight service object that wastes system resources by being always up, even though you only need it from time to time.
Instead of creating the object when the app launches, you can delay the object’s initialization to a time when it’s really needed.

❗️Access control (protection proxy). This is when you want only specific clients to be able to use the service object; for instance, when your objects are crucial parts of an operating system and clients are various launched applications (including malicious ones).
The proxy can pass the request to the service object only if the client’s credentials match some criteria.

❗️Local ex*****on of a remote service (remote proxy). This is when the service object is located on a remote server.
In this case, the proxy passes the client request over the network, handling all of the nasty details of working with the network.

❗Logging requests (logging proxy). This is when you want to keep a history of requests to the service object.
The proxy can log each request before passing it to the service.

❗️Caching request results (caching proxy). This is when you need to cache results of client requests and manage the life cycle of this cache, especially if results are quite large.
The proxy can implement caching for recurring requests that always yield the same results. The proxy may use the parameters of requests as the cache keys.

https://refactoring.guru/design-patterns/proxy

15/12/2022

Small project with ESP32, temperature sensor DHT11 and iOS Core Bluetooth with SwiftUI.

Smart Home App
13/12/2022

Smart Home App

🏗Builder is a creational design pattern that lets you construct complex objects step by step. The pattern allows you to ...
08/12/2022

🏗Builder is a creational design pattern that lets you construct complex objects step by step. The pattern allows you to produce different types and representations of an object using the same construction code.

❗️Use the Builder pattern to get rid of a “telescoping constructor”.

Say you have a constructor with ten optional parameters. Calling such a beast is very inconvenient; therefore, you overload the constructor and create several shorter versions with fewer parameters. These constructors still refer to the main one, passing some default values into any omitted parameters.

class Pizza {
init(int size) { ... }
init(int size, boolean cheese) { ... }
init(int size, boolean cheese, boolean pepperoni) { ... }
// ...

The Builder pattern lets you build objects step by step, using only those steps that you really need. After implementing the pattern, you don’t have to cram dozens of parameters into your constructors anymore.

❗️ Use the Builder pattern when you want your code to be able to create different representations of some product (for example, stone and wooden houses).

The Builder pattern can be applied when construction of various representations of the product involves similar steps that differ only in the details.

The base builder interface defines all possible construction steps, and concrete builders implement these steps to construct particular representations of the product. Meanwhile, the director class guides the order of construction.

❗️Use the Builder to construct Composite trees or other complex objects.

The Builder pattern lets you construct products step-by-step. You could defer ex*****on of some steps without breaking the final product. You can even call steps recursively, which comes in handy when you need to build an object tree.

A builder doesn’t expose the unfinished product while running construction steps. This prevents the client code from fetching an incomplete result.

07/12/2022

Loading Animation.

Language Learning App
01/12/2022

Language Learning App

Abstract Factory is a creational design pattern that lets you produce families of related objects without specifying the...
30/11/2022

Abstract Factory is a creational design pattern that lets you produce families of related objects without specifying their concrete classes.

Use the Abstract Factory when your code needs to work with various families of related products, but you don’t want it to depend on the concrete classes of those products—they might be unknown beforehand or you simply want to allow for future extensibility.

The Abstract Factory provides you with an interface for creating objects from each class of the product family. As long as your code creates objects via this interface, you don’t have to worry about creating the wrong variant of a product which doesn’t match the products already created by your app.

Consider implementing the Abstract Factory when you have a class with a set of Factory Methods that blur its primary responsibility.

In a well-designed program each class is responsible only for one thing. When a class deals with multiple product types, it may be worth extracting its factory methods into a stand-alone factory class or a full-blown Abstract Factory implementation.

✅You can be sure that the products you’re getting from a factory are compatible with each other.
✅You avoid tight coupling between concrete products and client code.
✅Single Responsibility Principle. You can extract the product creation code into one place, making the code easier to support.
✅Open/Closed Principle. You can introduce new variants of products without breaking existing client code.

❌The code may become more complicated than it should be, since a lot of new interfaces and classes are introduced along with the pattern.

28/11/2022

Oval Wobble in UIKit. Loading Animation

Water Tracking App
25/11/2022

Water Tracking App

Address

1a, Italiyskiy Boulevard
Odessa
65012

Opening Hours

Monday 10:00 - 19:00
Tuesday 10:00 - 19:00
Wednesday 10:00 - 19:00
Thursday 10:00 - 19:00
Friday 10:00 - 19:00

Telephone

+380637779997

Alerts

Be the first to know and let us send you an email when Oleksii iOS Developer posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Contact The Business

Send a message to Oleksii iOS Developer:

Share