Giter Club home page Giter Club logo

design-model's Introduction

design-model

良好的OO设计:

   实现复用的方式:  

      1,继承inheritance
      2,组合component
      3,委托delegation
      其中2,3具有运行时继承的效果

   可扩展  

   可维护

设计步骤:

   1,找出程序中会变化的部分,然后将其与不变的方面相分离(不变的可作为继承复用,变化的使用多态实现复用);
   2,针对接口编程,将变化的行为(算法族)抽象成接口;而非实现;(可扩展)
   3,利用多态实现多用组合,少用继承;(可复用,可维护)

OO基础:  

   抽象
   继承
   封装
   多态

OO原则:

**   封装变化
**   面向接口编程
**   多用组合,少用继承
**   为了交互对象之间的松耦合设计而努力;松耦合设计更有弹性,更能应对变化
**   开闭原则;对扩展开发,对修改关闭;

OO模式:

   观察者模式--Observer:  

     特点:

       1,在对象之间定义一对多的依赖,当subject对象的状态改变时候,依赖他的对象会收到通知,自动更新;
       2,一个新的模式,以松耦合方式在一系列对象之间沟通状态。

     应用:RMI,JavaBean等

缺点(java.util.Observabled) 优点
违反了面向接口编程 Subject与Observer之间松耦合,互不知晓实现,更改后互不影响
违反了多用组合,少用继承的原则(如setChanged()方法必须强制复写后才能将此方法与创建的Observable实例组合) Subject可以主动推送或者由Observer主动拉取
      多个观察者时,不可依赖特定的通知顺序

OO原则在Observer模式中的体现

OO原则 体现
封装变化 在模式中,Subject的主题状态和Observer的数量是变化的,封装Observer的变化和主题,使其变化不会互相影响,独立变化
面向接口编程 Subject与Observer互相持有彼此接口,通过接口来进行数据交互,对实现没有互相依赖,实现松耦合
多用组合 Subject持有Observer的实现类列表,即对象之间的关系是运行时通过组合实现的,而非继承

   装饰者模式--Decorator:

--coffee店案例

   工厂模式--Factory:

--Pizza店案例

*   工厂方法

*   抽象工厂

   命令模式--Command:

--线程池,队列,日志,遥控器

   适配器模式--Adapter:

--火鸡改造成鸭子

   外观模式--Facade:

--家庭影院案例

design-model's People

Contributors

baiyunpeng1991 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.