シンプルファクトリー//バスケットボール基本クラス var Basketball = function() { this.intro = 'バスケットボールはアメリカで人気があります'; } バスケットボール.プロトタイプ = { getMember: 関数() { console.log('各チームには5人のプレイヤーが必要です'); }, getBallSize: 関数() { console.log('バスケットボールはとても大きいです'); } } //フットボール基本クラス var Football = function() { this.intro = 'サッカーは世界中で人気があります'; } フットボール.プロトタイプ = { getMember: 関数() { console.log('各チームには11人のプレイヤーが必要です'); }, getBallSize: 関数() { console.log('フットボールはとても大きいです'); } } //スポーツファクトリー var SportsFactory = function(name) { スイッチ (名前) { 'NBA'の場合: 新しい Basketball() を返します。 ケース 'worldCup': 新しい Football() を返します。 } } //ワールドカップ用のサッカーボールを作成する必要がある場合は、スポーツ ファクトリ sportsFactory を呼び出して作成するだけです。var Footnall = SportsFactory('worldCup'); console.log(Footnall); console.log(Footnall.intro); Footnall.getMember(); //ファクトリーモード関数createBook(name, time, type) { var o = new Object(); //オブジェクトを作成し、オブジェクトのプロパティとメソッドを展開します //これは異なる部分です o.name = name; //書籍名 o.time = time; //書籍の出版時期 o.type = type; //書籍の種類 //以下は類似部分です o.getName = function() { コンソールにログ出力します。 }; //オブジェクトを返します return o; } // 2 冊の本を作成します var book1 = new createBook('JS book', 2021, 'js'); var book2 = new createBook('CSS book', 2019, 'css'); book1.getName(); book2.getName(); ファクトリーメソッドvar デモ = function() {} デモ.プロトタイプ = { 表示: 関数() { console.log('正常に取得されました'); } } var d = new Demo();//インスタンスを正しく作成 d.show(); //正常に取得 var d = Demo();//インスタンスの作成エラー d.show(); //爆発 var デモ = 関数() { if (!this instanceof Demo){//これが何を指しているかを判断します。 return new Demo(); } } デモ.プロトタイプ = { 表示: 関数() { console.log('セーフモードクラスは本当に便利です'); } } var d = デモ(); d.表示(); 安全な工場方法//セーフモードでファクトリークラスを作成する var Factory = function(type, content) { if (このインスタンスのファクトリー) { var s = new this[type](content); s を返します。 } それ以外 { 新しいファクトリー(type, content)を返します。 } } //ファクトリープロトタイプ内のすべてのタイプのデータオブジェクトを作成するための基本クラスを設定します。Factory.prototype = { java: 関数(コンテンツ) { //... }, UI: 関数(コンテンツ) { this.content = コンテンツ; (関数() { var div = document.createElement('div'); div.innerHTML = コンテンツ; div.style.border = '1px solidd red'; document.getElementById('コンテナ').appendChild(div); })(コンテンツ); }, php: 関数(コンテンツ) { //... }, javascript: 関数(コンテンツ) { //.. } }; //オブジェクトを作成 var data = [ { type: 'javascript', content: 'どのjsが最適か' }, { タイプ: 'java'、コンテンツ: 'どの Java が最適か' }, { type: 'UI', content: 'どの UI が最適か' } ]; for (let index = 0; index < data.length; index++) { console.log(データ[インデックス].type); ファクトリー(データ[インデックス].type、データ[インデックス].content); } アブストラクトファクトリーvar 車 = 関数() {} 車プロトタイプ = { 価格を取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); }, 取得速度: 関数() { return new Error('抽象メソッドを呼び出すことができません'); } }; //抽象ファクトリーメソッド var VehicleFactory = function(subType, superType) { //抽象クラスが抽象ファクトリー内に存在するかどうかを判断します if (typeof VehicleFactory[superType] === 'function') { //キャッシュクラス関数 F() {}; //親クラスのプロパティとメソッドを継承する F.prototype = new VehicleFactory[superType](); //サブクラスのコンストラクターをサブクラスにポイントします。subType.constructor = subType; //サブクラスのプロトタイプは親クラスを継承します。subType.prototype = new F(); } それ以外 { //抽象クラスが存在しない場合は、new Error('抽象クラスは作成されませんでした') をスローします。 } }; //車の抽象クラスVehicleFactory.Car = function() { this.type = '車'; } VehicleFactory.Car.プロトタイプ = { 価格を取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); }, スピードを取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); } }; //バス抽象クラス VehicleFactory.Bus = function() { this.type = 'バス'; } VehicleFactory.Bus.プロトタイプ = { 価格を取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); }, getPassengerNum: 関数() { return new Error('抽象メソッドを呼び出すことができません'); } } //抽象と実装//BMW車のサブクラス var BMW = function(price, speed) { this.price = 価格; this.speed = 速度; }; //抽象ファクトリは、Car 抽象クラスの継承を実装します。VehicleFactory(BMW, 'Car'); BMW.prototype.getPrice = function() { // メソッドを書き換えて、this.price を返します。 } BMW.prototype.getSpeed = 関数(){ this.speed を返します。 }; //宇通バスのサブクラス var YUTONG = function(price, passage) { this.price = 価格; this.passenger = 乗客; }; //抽象ファクトリは、BUS 抽象クラスの継承を実装します。VehicleFactory(YUTONG, 'Bus'); YUTONG.prototype.getPrice = 関数() { this.price を返します。 } YUTONG.prototype.getPassengerNum = 関数() { this.passenger を返します。 }; //クラスをインスタンス化します var myBMW = new BMW('100w', '1000km/h'); コンソールにログ出力します。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
目次MySQLデータベースの名前を変更する方法最初の方法: データベースの名前を変更することは非推奨...
さっそくAlibaba の oracle11g イメージをプルして構成する docker の記録を開...
目次序文コア - キャンセルトークン実用的なアプリケーションとパッケージングいくつかの小さな詳細序文...
序文:データベースの運用や保守の際には、リンクの総数がいくつあるか、アクティブなリンクがいくつあるか...
まず、このブログのケースデモンストレーション テーブルを作成します。 create table a(...
目次1. 問題の説明2. 問題解決1. 仮想マシンシステムのインストール時にネットワークがない場合2...
LinuxにRedisをインストールしたら、Javaを使って接続します。Javaコードは次のとおりで...
MacOS Catalina アップグレード後の VMware ブラック スクリーンに対する完璧なソ...
目次DOM処理配列方法要約するDOM処理DOM はドキュメントの構造化された表現を提供し、スクリプト...
目次1. データ操作言語 (DML) 2. データを追加する(挿入) 3. 既存のテーブルをコピーし...
1. Apache Benchの紹介ApacheBench は、Apache サーバーに付属する W...
この記事では、簡単なパズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な...
1. まず、自分のdockerhubアカウントを登録します。登録アドレス: https://hub....
目次1. 元の配列が変更されます1. プッシュ(): 2.ポップ(): 3. シフト(): 4.un...
isnullの代わりにifnullを使用するisnull は、null かどうかを判断するために使用...