Scott Cate CloudDB.com Session Code: DPR401.

Slides:



Advertisements
Similar presentations
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Advertisements

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
Preface Demo A Quick Thank You How Did We Do It?
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Feature: Purchase Requisitions - Requester © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names.
MIX 09 4/15/ :14 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Design Patterns. What are design patterns? A general reusable solution to a commonly occurring problem. A description or template for how to solve a problem.
Windows 7 Training Microsoft Confidential. Windows ® 7 Compatibility Version Checking.
Feature: OLE Notes Migration Utility
Session 1.
Built by Developers for Developers…. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names.
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
Robert LevyDoug Kramer Program ManagerDevelopment Lead DTL337.
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
 Paul Vick Principal Architect Microsoft Corporation  Lucian Wischik Software Engineer Microsoft Corporation.
Chris Menegay VP of Consulting Notion Solutions, Inc. DTL319.
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or.
Ram Cherala Principal Program Manager Microsoft Corporation DTL320.
demo Instance AInstance B Read “7” Write “8”

Dmitry Sotnikov New Product Research Manager Quest Software DTL404.
customer.
Mickey Gousset Senior Technical Developer Infront Consulting Group Session Code: DTL330.
demo © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names.
Name:David Hill Title:Principal Architect Company:Microsoft Patterns & Practices Session Code:ARC303.
demo Demo.
demo QueryForeign KeyInstance /sm:body()/x:Order/x:Delivery/y:TrackingId1Z
Rabi Satter Sr. Program Manager Microsoft Corporation DTL301.
projekt202 © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are.
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks.
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or.

Mark Michaelis Chief Computer Nerd IDesign/Itron/IntelliTechture DTL313.
Scott Morrison Program Manager Microsoft Corporation Session Code: WUX308.
MIX 09 4/17/2018 4:41 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Tech·Ed North America /18/2018 2:05 PM
Tech·Ed North America /19/2018 3:29 PM
Tech·Ed North America /7/2018 2:58 PM
9/11/2018 5:53 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Tech·Ed North America /14/2018 7:13 PM
Возможности Excel 2010, о которых следует знать
Sysinternals Tutorials
Tech·Ed North America /19/ :44 PM
11/21/2018 4:57 AM SIA303 Advanced Persistent Threats (APT): Understanding the New Era of Attacks! Marcus Murray Security Team Manager, Microsoft MVP –
11/22/2018 © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks.
Jason Zander Unplugged
Title of Presentation 12/2/2018 3:48 PM
Brian Keller Sr. Technical Evangelist Microsoft Session Code: DEV310
12/5/2018 3:24 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Tech·Ed North America /17/2019 6:01 PM
Brian Keller Sr. Technical Evangelist Microsoft Session Code: DEV310
Building Silverlight Apps with RIA Services
8/04/2019 9:13 PM © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
A Lap Around Internet Explorer 9 For Developers
Виктор Хаджийски Катедра “Металургия на желязото и металолеене”
From Start to REST in 60 Minutes (DEV323)
Tech·Ed North America /25/ :53 PM
Hack-proofing your Clients using Windows 7 Security!
Шитманов Дархан Қаражанұлы Тарих пәнінің
Lap Around the Windows Azure Platform
Building BI applications using PowerPivot for Excel
Title of Presentation 5/24/2019 1:26 PM
5/24/2019 6:44 PM 1/8/18 Bell #10 In a world governed by the gods, is there any room for human will? Do human choices make a difference? EXPLAIN © 2007.
7/5/2019 © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks.
Tech·Ed North America /17/2019 4:14 PM
What’s New in Visual Studio 2012 for Web Developers
5/6/19, Bell #6 12/11/2019 8:26 PM Explain the relationship between this picture and the events that took place in Chapter 7 in Animal Farm. © 2007 Microsoft.
Presentation transcript:

Scott Cate CloudDB.com Session Code: DPR401

Design Patterns for the Rest of Us! DPR401 Patterns Patterns Patterns. You hear about them everywhere. We're told to use them and call them by names, as if the pattern is a colleague of ours. Hey, did you see the {Fill In Blank} Pattern in the demo this morning? If you feel left out in conversations where Pattern buzzwords are thrown around, this session is for you. This session introduces Patterns with imagery, code, terms, and fun and games to help you better understand and remember pattern usage.

Design Patterns Target audience for this talk You know the language very well You are an advanced programmer BUT ….. It’s difficult to explain what your code does Others tell you your code is hard to read Your code is buggy / hard to maintain Changing something little causes other unknowns YOU ARE NOT ALONE! IT IS HARD TO ADMIT THIS!

The Life Cycle of Bad Source Code Rewrite == expensive The original author is gone The code is hard to read Hard to understand functionality Cause to rewrite / replace Better code with patterns Proprietary == EXPENSIVE!

Where We Started! (Most of us)

OO Spaghetti Code Not my code, my code is good to me Is that because you wrote it? It’s in your head so you understand it Is the code hard to read / explain? Easy to get started with sloppy code but… It’s hard to add functionality later It’s hard to make core changes later

How We’ve Cleaned Up Our Code (Most of us)

Developing by Contract The unknown neighbor

Handling Change Requests Should be this easy

Building Blocks

What is a Design Pattern? (This is a legit question) No, it’s not a scary monster Proven Logical Techniques Tech communities agree on patterns (it’s hard to get people to agree) Common Vocabulary Easy to understand / inherit / read Just a term – not a golden solution

GOF: 3 Design Pattern Categories Dozens of more categories, these are GOF Creation How, Where, When, Why do you instantiate objects? GOF: Factories, Builder, Prototype, Singleton Structural Change, Migrate, Add to, Copy, Split, Move objects GOF: Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy Behavioral Passing around, working on, alter, add functionality to objects Command, Chain of Responsibility, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor

Commonly Used Design Patterns! Observer Pattern – Start nice and easy

Commonly used Design Patterns! Singleton Pattern – Very common / Easy to write

Commonly Used Design Patterns! Factory Pattern – Delegate “New”ing objects

Commonly Used Design Patterns! Command (AKA Action) Pattern – Store, Queue, Execute

Commonly Used Design Patterns! Template – Delegate base functionality

Commonly Used Design Patterns! State Pattern – Delegate action based on state

Commonly Used Design Patterns! Strategy Pattern – Algorithms / Single or Multi Pass

Anti Patterns Square Pegs / Round Holes Don’t use a pattern just because Don’t over engineer Don’t make fun of others Don’t overuse a pattern If every class uses the same pattern it’s probably over used. This is an easy trap to fall into.

Special Thanks Brainstorm + session guidance Jeffrey Palermo Glenn Block Ward Bell James Avery Paul Glavich Jeff Widmer

Recommended Reading (where to learn more) Elements of Reusable Object-Oriented Software Commonly known as “The Gang of Four” Martin Fowler’s PoEAA Patterns of Enterprise Application Architecture O’Reilly: Head First Design Patterns Joshua Kerievsky Refactoring to Patterns DoFactory.com

Track Resources Visit the DPR TLC for a chance to win a copy of Visual Studio Team Suite. Daily drawing occurs every day in the TLC at 4:15pm. Stop by for a raffle ticket us/products/teamsystem/default.mspx Please visit us in the TLC blue area

Sessions On-Demand & Community Resources for IT Professionals Resources for Developers Microsoft Certification and Training Resources Microsoft Certification & Training Resources Resources

Complete an evaluation on CommNet and enter to win!

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.