GithubHelp home page GithubHelp logo

andy521 / java_design_patterns Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lidong1665/java_design_patterns

0.0 1.0 0.0 12 KB

Java 设计模式的讲解库,主要适用于学习Java的设计模式

Java 100.00%

java_design_patterns's Introduction

JAVA_DESIGN_PATTERNS

Java 设计模式的讲解库,主要适用于学习Java的设计模式

1.模板模式的使用方法:

#抽象计算机类: package template; /**

  • AbstractComputer

  • @author lidong

  • @2016-02-26 */ public abstract class AbstractComputer {

    public void powerOn() { System.out.println("打开电源"); }

    public void checkHardware() { System.out.println("检查硬件"); }

    public void loadOS() { System.out.println("加入操作系统"); }

    public void login() { System.out.println("小白的计算机无验证,直接进入系统"); }

    public final void startUp(){ System.out.println("=====开机==start======"); powerOn(); checkHardware(); loadOS(); login(); System.out.println("=====关机==stop======"); } } #实现类 package template; /**

  • 程序员的计算机

  • @author lidong

  • @2016-02-26 */ public class CoderComputer extends AbstractComputer {

    @Override public void login() { super.login(); System.out.println("程序员只需要进行用户和密码的验证就可以了"); }

} package template; /**

  • 航天员的计算机

  • @author lidong

  • @2016-02-26 */ public class MilitaryComputer extends AbstractComputer{

    @Override public void checkHardware() { super.checkHardware(); System.out.println("检查硬件防火墙"); }

    @Override public void login() { super.login(); System.out.println("进行指纹识别"); }

} 测试类 package template;

/**

  • 测试方案
  • @author Administrator

*/ public class Test {

public static void main(String[] args) {
   AbstractComputer comp = new CoderComputer();
   comp.startUp();
   
   comp = new MilitaryComputer();
   comp.startUp();
}

}

#2.单例模式的使用场景 确保某一个类中只有一个实例,而且自行实例化并且向整个系统提供一个实例。 singleton包下的Singleton是懒汉式单例,Singleton双检查单例,Singleton2饿汉式单例 单例模式的使用场景: 确保某个类有且只有一个实例。避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且既有一个。 例如创建一个对象需要消耗资源过多,如要访问IO和数据库资源、网络资源,这事就要考虑使用单例 单例模式的关键点: (1)构造方法私有化,一般为private (2).通过一个今天方法返回单例对象。 (3)确保单例类对象只有一个,尤其是在多线程的情况下。 (4)确保单例类对象在反序列化时,不重新构建对象。

#3.Builder设计模式 3.1Builder模式的定义 将一个复杂的对象的构建与他的表示分离,使的同样的构建过程可以构建不同的表示。 3.2Builder模式的使用场景 (1)相同的方法,不同的执行顺序,产生不同的事件结果。 (2)多个部件都可以装配到一个对象中,但是产生的运行结果又不相同。 (3)产品类非常复杂,或者产品类中调用顺序不同产生不同的作用,这时候使用建造者模式非常是适合。 (4)当初始化一个复杂的对象,如好多参数,且很多参数都具有默认值。 3.3Builder模式的UML图 Product产品类---产品的抽象 Builder--抽象的Builder,规范产品的组件,一般是由子类实现具体的组件过程。 ConcreateBuilder --具体的Builder类 Director--统一的组件过程。

builder包下Builder。

java_design_patterns's People

Contributors

lidong1665 avatar

Watchers

 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.