Archive for the 'layers' Category

Everyday Tales: Anatomy of a Refactoring – Part 3

We finished last post with this funny situation: the abstraction that represents Facebook depends on our Domain Model.

It was a bit obvious that what we needed was not only system abstractions for Facebook, Twitter and the like but Bounded Contexts. We need to acknowledge the fact that these domains are not part of our model, […]

Everyday Tales: Anatomy of a Refactoring – Part 2

Read the first post here.
In the previous post we were facing the problem demonstrated by the diagram below.

Our FacebookMessageParser needs an instance of AllSocialNetworks so that it can create valid Users coming from Facebook. The only implementation we have for the AllSocialNetworks interface is UserRepository, and this implementation needs a FacebookMessageParser. That’s a circular dependency, […]

Everyday Tales: Anatomy of a Refactoring

I’ve been extremely busy with project after project in the past few months, leaving me no time to do any research and/or play around interesting things. Even though I prefer to write about what is really interesting me at a given moment, I think that writing about some smaller/simpler problems and solutions would be better […]

I Wish I Knew That Before Getting This Job – Slides and (Long) Notes

As I said here before I was in Brazil some weeks ago to present at a conference. I had a really great time over there with some amazing people and would like to thank Caelum for their hard work in creating such a great conference. I’m making the slide deck and notes available in my […]

Don’t Trust Fake IDs

After so many years I thought that this was a dead topic but recently I saw at least two reasonably experienced developers having trouble with object identity and thought that it would be good to write about it.
Most languages define some kind of equality operator on objects, in Java, for example, that is the equals […]

Gödel and Testing

For some months now I’ve being playing around the idea of writing a testing framework for Clojure. It started as just a more extensible fork of the fact library but now I’m trying to explore some funny ideas in the testing semantics.

Although this project is progressing too slowly it already spawned some other pet […]

What Is a Service?

More and more people are deploying Services, APIs and all kinds of distributed components. Major content providers are finally finding out that exposing their features to developers not only keep them relevant but also creates a nice ecosystem around their business.
When someone decides to expose a piece of software to others –being internal users in […]

Internal Data Transfer Objects

One recurrent question when it comes to real world usage of Domain Models is how to integrate the Presentation and the Business Layers. As we saw here before Layers is a disciplined approach to manage dependencies among objects. The question raised is about how to integrate the two topmost Layers in the diagram below.

I have […]

Layers and Exceptions

Proper layering is not about grouping classes but reducing complexity by managing dependencies. One thing that seems to bug a lot of people is how exceptions should be handled in a Layered architecture.
It’s interesting how this question relates to fundamental development principles like encapsulation, contracts and abstractions.
I see three types of exceptions in […]

Object-Oriented Design: Which, How and What

My friend Mark Needham wrote a blog post on the Domain Model pattern and Domain-Driven Design recently. He changed a bit the contents but the original question was: Should we always use Domain-Driven Design? In response, the author gave an overview of several architectural patterns for domain logic.
I pointed out in a comment that I […]




About

You are currently browsing the Fragmental.tw weblog archives for the layers category.

Longer entries are truncated. Click the headline of an entry to read it in its entirety.





Creative Commons License

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.